Dynamic language translation of web site content

ABSTRACT

Methods, systems, and computer readable medium for providing translated web content. A request is received from a user for content in a second language translated from content in a first language from a first Internet source. The content in the first language is obtained and divided into one or more translatable components. Whether the one or more translatable components have been previously translated, via at least one of machine translation, human translation, and a combination thereof, into the second language and stored as translated components in a storage is determined. If there are one or more translatable components previously translated and stored, the content is generated in the second language by modifying the content in the first language so that at least some translatable components are replaced with corresponding translated components and sent in the second language to the user as a response to the request.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 16/459,842 filed Jul. 2, 2019, which is a continuation of U.S.patent application Ser. No. 15/821,607 filed Nov. 22, 2017, which is acontinuation of U.S. patent application Ser. No. 14/817,343 filed Aug.4, 2015, which is a continuation of U.S. patent application Ser. No.13/182,059, filed Jul. 13, 2011, which claims the benefit of U.S.Provisional Patent Application No. 61/363,804, filed Jul. 13, 2010, thecontents of all of which are incorporated herein by reference in theirentireties.

TECHNICAL FIELD

The present teaching generally relates to Internet applications, andmore particularly relates to translation of web content.

BACKGROUND

The Internet and the world-wide web have allowed consumers to completebusiness transactions with organizations or individuals located acrosscontinents from the comfort of their own desk. In an increasingly globalmarketplace, it is becoming imperative for businesses/organizations toprovide web site content in multiple languages in order to expand theircustomer base beyond their home countries. In addition, as thedemographics of a country change to include foreign language speakers,it is increasingly important to communicate with existing customersand/or potential customers in their native language. For example,several large U.S. retailers have announced that serving the Hispanicsegment is now a very high priority. Some U.S. retailers have even hiredHispanic advertisement agencies to start marketing to the Hispanicmarket in their native language—Spanish.

Traditionally, an organization that wants to translate its web site toanother language can choose from several techniques, each havingsignificant drawbacks. One technique involves purchasing machinetranslation technology. Machine translation is sometimes useful to get arough idea as to the meaning of the content on a web site, but it is farfrom ideal. For most organizations, this type of translation, althoughconvenient, is not practical because the quality of the translation frommachines is simply not good enough to be posted on their web sites.

Another technique involves managing the translation process by deployinghuman translators and either maintaining multiple web sites for eachlanguage, or re-architecting the existing web site back-end technologyto accommodate multiple languages. This requires significant resourcesin terms of time and cost, including a high level of complexity andduplication of effort. In addition, dynamic and e-commerce sites presentother challenges as well, as the information to be translated resides inmultiple places (e.g., a Structured Query Language database, staticHyper Text Markup Language pages and dynamic Hyper Text Markup Languagepage templates) and each translated site interfacing with the samee-commerce or back-end engine. Further, as a web site undergoes changes,it is important to handle ongoing maintenance properly. Although, thisapproach may yield superior translations that are suitable forprofessional web sites of large organizations, it is at a great cost.Most organizations simply do not have, or do not want to invest in, theresources necessary to handle this task internally.

For example, FIG. 1 (PRIOR ART) is a block diagram illustrating thesystem architecture of a conventional web site. The web site of FIG. 1is presented in a first language, such as English. FIG. 1 shows a webserver 112 connected to the Internet 116 via a web connection. A publicuser 118, such as a person using a computer with a web connection, canaccess the web server 112 via the Internet 116 and download information,such as a web page 114, from the web server 112 for viewing. The webserver 112 is operated by programming logic 110, comprising instructionson how to retrieve, serve, and accept information for processing. Theweb server 112 further has access to a database 102 for storinginformation, as well as Hyper Text Markup Language (HTML) template files104, graphics files 106 and multimedia files 108, all of whichconstitute the web site served by web server 112.

FIG. 2 (PRIOR ART) is a block diagram illustrating the systemarchitecture of a conventional web site presented in two languages. Theweb site of FIG. 2 is presented in a first language, such as English (asshown above for FIG. 1) and in a second language, such as Spanish. FIG.2 shows the web server 112 and the other English language componentsdescribed in FIG. 1, including the database 102 of information, the HTMLtemplate files 104, graphics files 106, multimedia files 108 andprogramming logic 110. FIG. 2 further shows the public user 118accessing the web server 112 via the Internet 116 and downloadinginformation, such as a web page 202 in English or Spanish language.

FIG. 2 also includes components related to providing web content inSpanish language. For example, FIG. 2 (has Spanish language components,including a database 208 of information, HTML template files 214,graphics files 216, multimedia files 210 and programming logic 212.These Spanish language components are managed by a multi-lingual contentmanager 206, which manages requests for information in the duallanguages. FIG. 2 further shows that the web server 112 is re-engineeredto serve multiple sets of content in different languages.

As can be seen in the difference between FIG. 1 and FIG. 2, thedeployment of the Spanish language components 204 and multi-lingualcontent manager 206 of FIG. 2 requires a significant expenditure ofeffort and resources. Further, the deployment requires re-engineeringthe web server 112, adding to the time and cost associated with thedeployment. Additionally, once the Spanish language components 204 havebeen established, continuous synchronization with changes in the Englishlanguage components results in a recurring cost.

Therefore a need exists to overcome the problems with the prior art asdiscussed above.

SUMMARY

Briefly, in accordance with the present teaching, disclosed is a system,method and computer readable medium in association with providingtranslated web content.

In one example, a method, implemented on a computer having at least oneprocessor, storage, and a communication platform for providingtranslated web content. A request is first received from a user forcontent in a second language translated from content in a first languagefrom a first Internet source. The content in the first language from thefirst Internet source is obtained. The content in the first language isdivided into one or more translatable components, wherein a translatablecomponent includes a segment of text. Whether the one or moretranslatable components have been previously translated, via at leastone of machine translation, human translation, and a combinationthereof, into the second language and stored as translated components ina storage is determined. If there are one or more translatablecomponents previously translated and stored as translated components,the content is generated in the second language by modifying the contentin the first language so that at least some translatable components arereplaced with corresponding translated components, and the content issent in the second language to the user as a response to the request.

In another example, a method, implemented on a computer having at leastone processor, storage, and a communication platform for providingtranslated web content. A request is first received from a user forcontent in a second language translated from content in a first languageaccessible from a first Internet source. The content in the firstlanguage from the first Internet source is obtained. The content in thefirst language is divided into one or more translatable components,wherein a translatable component includes a segment of text. Whether anyof the translatable components does not have a corresponding translatedcomponent stored in the storage and generated previously via at leastone of machine translation, human translation, and a combination thereofis determined. Translation of the translatable components that do nothave corresponding translated components via at least one of machinetranslation, human translation, and a combination thereof is scheduledto generate the corresponding translated components, wherein eachsegment of text is translated as a unit. The corresponding translatedcomponents are then stored in the storage.

In a different example, a method, implemented on a computer having atleast one processor, storage, and a communication platform for managinglanguage translation. Content in a first language is first accessed froman Internet source via a publicly available network path. A portion ofthe content in the first language that is not yet translated into asecond language is identified. Translation of the portion of the contentin the first language that is not yet translated into a second languageusing at least one of machine translation, human translation, and acombination thereof is then scheduled to produce corresponding contentin the second language.

Additional advantages and novel features will be set forth in part inthe description which follows, and in part will become apparent to thoseskilled in the art upon examination of the following and theaccompanying drawings or may be learned by production or operation ofthe examples. The advantages of the present teachings may be realizedand attained by practice or use of various aspects of the methodologies,instrumentalities and combinations set forth in the detailed examplesdiscussed below.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 (PRIOR ART) is a block diagram illustrating the systemarchitecture of a conventional web site;

FIG. 2 (PRIOR ART) is a block diagram illustrating the systemarchitecture of a conventional web site presented in two languages;

FIG. 3 is a block diagram illustrating an exemplary system architectureof a web site presented in two languages, in one embodiment of thepresent teaching;

FIG. 4 is a block diagram illustrating an exemplary system architectureof the present teaching, in one embodiment of the present teaching;

FIG. 5 is an operational flow diagram depicting an exemplary process ofthe translation server, according to one embodiment of the presentteaching;

FIG. 6 is an operational flow diagram depicting an exemplary servingprocess of the translation server, according to one embodiment of thepresent teaching;

FIG. 7(a) is a block diagram depicting an exemplary serving process inan ASP model of the translation server, according to one embodiment ofthe present teaching;

FIG. 7(b) is a block diagram depicting an exemplary process in an ASPmodel of the translation server when the content to be translated is notpresent on the web site or is not delivered to the user via the website, according to one embodiment of the present teaching;

FIG. 8(a) is a block diagram depicting an exemplary serving process in aweb service model of the translation server, according to one embodimentof the present teaching;

FIG. 8(b) is a block diagram depicting an exemplary serving process in aweb service model of the translation server when the content to betranslated is not present on the web site or is not delivered to theuser via the web site, according to one embodiment of the presentteaching;

FIG. 9 is a screenshot of an exemplary WebCATT interface used forviewing web content for translation, in one embodiment of the presentteaching;

FIG. 10 is a screenshot of an exemplary WebCATT interface used forviewing a translatable image along with a corresponding translation, inone embodiment of the present teaching;

FIG. 11 is a screenshot of an exemplary WebCATT interface used forediting a translatable segment of text, in one embodiment of the presentteaching;

FIG. 12 is a screenshot of an exemplary WebCATT interface used forviewing a translation queue, in one embodiment of the present teaching;

FIG. 13 is an operational flow diagram depicting an exemplary process ofWebCATT, according to one embodiment of the present teaching;

FIG. 14 is an operational flow diagram depicting an exemplary process ofthe spider, according to one embodiment of the present teaching;

FIG. 15 is an operational flow diagram depicting an exemplarysynchronization process according to one embodiment of the presentteaching;

FIG. 16 is a block diagram showing a computer system useful forimplementing the present teaching;

FIG. 17 is a screenshot of an exemplary Preference Selector pop-upwindow on the user agent (e.g., a browser), according to one embodimentof the present teaching;

FIG. 18 is an operational flow diagram depicting an exemplary process ofloading Preference Selector, according to one embodiment of the presentteaching;

FIG. 19 is an operational flow diagram depicting an exemplary process ofthe Preference Selector server-side application, according to oneembodiment of the present teaching;

FIG. 20 is a block diagram depicting an exemplary process of thePreference Selector server-side application request and the response,according to one embodiment of the present teaching;

FIG. 21 is a block diagram illustrating an exemplary system architectureof the Content Localizer, according to one embodiment of the presentteaching;

FIG. 22 is an operational flow diagram depicting an exemplary process ofthe Content Localizer Server for generating localized content, accordingto one embodiment of the present teaching;

FIG. 23 is an operational flow diagram depicting an exemplary process ofthe Content Localizer Server for analyzing the request inputs againstthe conditions associated with a localized content to determine whetherthe conditions are met, according to one embodiment of the presentteaching;

FIG. 24 is an operational flow diagram depicting an exemplary process ofthe Translation Server for recognizing the areas of the page to belocalized, according to one embodiment of the present teaching; and

FIG. 25 is a block diagram depicting an exemplary process of the ContentLocalizer Server request and the response, according to one embodimentof the present teaching.

DETAILED DESCRIPTION

The methods, systems, and medium, disclosed in accordance with presentteaching, overcome problems with the prior art by providing an efficientand easy-to-implement system and method for dynamic language translationof a web site.

Overview

FIG. 3 is a block diagram illustrating an exemplary system architectureof a web site presented in two languages, according to one embodiment ofthe present teaching. The web site shown in FIG. 3 may be presented in afirst language, such as English, and a second language, such as Spanish.FIG. 3 shows the web server 112 may be connected to the Internet 116 viaa web connection. A public user 118 may access the web server 112 viathe Internet 116 and download information, such as a web page, from theweb server 112 for viewing. The user 118 may utilize a clientapplication, such as a web browser, on a client computer to connect tothe web site of via the network 116. Once connected to the web site, theuser 118 may browse through the products or services offered by the website by navigating through its web pages.

In this example, the web server 112 is operated by programming logic110, and the web server 112 further has access to a database 102 ofinformation, as well as HTML template files 104, graphics files 106 andmultimedia files 108, all of which constitute the English components ofthe web site served by web server 112.

FIG. 3 further includes a translation server 300 situated apart from andexisting independently from the web server 112. The translation server300 may embody the main functions of the present teaching, including theprovision of a web site in a secondary language, such as Spanish. Thetranslation server 300 may provide the secondary language components ofa base web site, which is provided by web server 112, without requiringintegration with the base web site or re-configuring or re-engineeringof the web server 112.

As can be seen in the difference between FIG. 2 and FIG. 3, thedeployment of the secondary language components FIG. 3 requires asignificantly reduced expenditure of time and resources than thedeployment of FIG. 2. Further, in this example, the deployment of FIG. 3does not require the re-engineering of the web server 112. Additionally,once the secondary language components have been established by thetranslation server 300, they are automatically kept synchronized withthe English language components of the base web site. Thus, the systemof the present teaching reduces the amount of time, effort and resourcesthat are required to deploy a secondary language web site.

FIG. 4 is a block diagram illustrating an exemplary system architectureof the present teaching, in one embodiment of the present teaching. FIG.4 presents an alternative point of view of the system architecture ofthe present teaching. FIG. 4 shows a web site 414 representing a website in a first language such as English that is connected to theInternet 412 via a web connection. FIG. 4 further shows a user 416 thatutilizes a web connection to the Internet 412 to browse and navigate theweb pages served by the web site 414.

FIG. 4 further shows a translation server 400, corresponding to thetranslation server 300 of FIG. 3, and a translation database 406 for useby the translation server 400 for storing translated components duringthe serving of web pages in a secondary language, such as Spanish. Thisprocess is described in greater detail below. Also shown in FIG. 4 isthe Web Computer Aided Translation Tool (WebCATT), which is a tool foraiding a human 418 or an admin 410 in translating the components of aweb site in a first language. Further shown is a spider 404 for use insynchronizing, analyzing and sizing a web site 414. The translationserver 400, WebCATT tool 408 and spider 404 may be connected to a webserver 402, which is the conduit through which all web actions of theabove tools are channeled. The translation server 400, WebCATT tool 408are described in greater detail below.

In an embodiment of the present teaching, the computer systems oftranslation server 400, WebCATT tool 408, spider 404 and web server 402are one or more Personal Computers (PCs) (e.g., IBM or compatible PCworkstations running the Microsoft Windows95/98/2000/ME/CE/NT/XP/VISTA/7 operating system, Unix, Linux, Macintoshcomputers running the Mac OS operating system, ANDROID, or equivalent),Personal Digital Assistants (PDAs), tablets, smart phones, game consolesor any other information processing devices. In another embodiment ofthe present teaching, the computer systems of translation server 400,WebCATT tool 408, spider 404 and web server 402 are server systems(e.g., SUN Ultra workstations running the SunOS operating system or IBMRS/6000 workstations and servers running the AIX operating system).

In one embodiment of the present teaching, Internet network 412 is acircuit switched network, such as the Public Service Telephone Network(PSTN). In another embodiment of the present teaching, the network 412is a packet switched network. The packet switched network includes awide area network (WAN), such as the global Internet, a private WAN, alocal area network (LAN), or any combination of the above-mentionednetworks. In another embodiment of the present teaching, network 412 isa wired network, a wireless network, a broadcast network or apoint-to-point network. In another embodiment of the present teaching,network 412 is a communication path among different processes within thesame physical hardware or memory space. In another embodiment of thepresent teaching, network 412 is a combination of any of theabove-mentioned networks.

Translation Server Introduction

The translation server 400 is the application responsible for theconversion of web pages in one language to that in another language. Thetranslation server 400 may parse each incoming HTML page intotranslatable components, substitute each incoming translatable componentwith an appropriate translated component, and return the translated webpage back to the online user 416. Page conversion may be performed onthe fly each time an online user 416 requests a page in the second oralternate language. In one embodiment, when a web page is received forconversion, the translation server 400 will translate the page if enoughtranslated content is available to meet a customer specified translationthreshold. If this is not the case, then the page will be returned inthe first or original language.

A translatable component may include any one of a text segment, an imagefile with text to be translated, a multimedia file with text or audio tobe translated, a file with text to be translated, a file with image withtext to be translated, a file with audio to be translated, a file withvideo and with at least one of text and audio to be translated, or anyother suitable file. A text segment may be a single word, a shortphrase, a sentence, a paragraph or multiple paragraphs, or any othersuitable segment.

In this example, the page conversion process follows seven major steps,some of which may be optional. In a first step, for each text segmentencountered, if a translation is available, the text segment may bereplaced with the translated text segment. If no translation isavailable, either the text remains in the original language or a machinetranslation may be performed on the fly, depending on the customer'spreference. In a second step, for each linked file (images, PDF files,Flash movies, etc.) encountered if a translated file is available, theHTML, link tag may be rewritten so that it points to the translatedfile. If a translated file is not available, the original link tag maybe left untouched. In a third step, any relative Universal ResourceLocator (URL) found in the page may be converted to an absolute URL.This step may be necessary if the resolution of the relative URLs in theuser agent (e.g., a browser) requires adjustment.

In a fourth step, each JavaScript block may be parsed to identifytranslatable components, such as text or images, requiring translation.In a fifth step, each link to another web page may be rewritten so thatthe original URL is redirected to the translation server 400. Forexample, when an online user clicks on a rewritten link, the requestthen goes directly to the translation server 400, and the page is inturn translated. This step may be necessary if resolution of relativeURLs in the user agent (e.g., a browser) requires adjustment. Thisfeature, which keeps the user in the alternate language as they browsethe site, is called “implicit navigation”.

In a sixth step, for each directive tag or attribute found, anappropriate instruction may be performed. In a seventh step, thetranslation server 400 may automatically schedule the web page fortranslation by placing it in the WebCATT 408 translation queue, in theevent that an available translation cannot be found for one or more textsegments or linked files in the page.

FIG. 5 is an operational flow diagram depicting an exemplary process ofthe translation server 400, according to one embodiment of the presentteaching. The operational flow diagram in FIG. 5 depicts how thetranslation server 400 responds to a user request for a web page in asecondary language. The operational flow diagram of FIG. 5 begins withstep 502 and flows directly to step 504.

In step 504, the translation server 400 may receive a request from auser 416 on a web site 414, the web site 414 having a first web contentin a first language, such as English. The request, such as but notlimited to an HTTP request or a Simple Mail Transfer Protocol (SMTP)request, may call for a second web content in a second language, such asSpanish. The second web content may be a human translation, machinetranslation, or human edited machine translation in a second language ofthe first web content. The first language includes any one of English,French, Spanish, German, Portuguese, Italian, Japanese, Chinese, Korean,Arabic, and any other suitable language, and the second language isdifferent than the first language and includes any one of English,French, Spanish, German, Portuguese, Italian, Japanese, Chinese, Korean,Arabic, and any other suitable language.

In step 506, the translation server 400 may retrieve the first webcontent from the web site 414. In step 508, the translation server 400may divide the first web content into one or more translatablecomponents.

In step 512, the translation server 400 may identify one or moretranslated components of the second web content corresponding to one ormore translatable components of the first web content. In step 514, thetranslation server 400 may arrange or put the translated components ofthe second web content to preserve a format that corresponds to thefirst web content, including, for example, putting tags that are notvisible in the first web content. In step 516, the translation server400 may provide the second web content in response to the request thatwas received. In step 518, the control flow of FIG. 5 stops.

FIG. 6 is an operational flow diagram depicting an exemplary servingprocess of the translation server 400, according to an embodiment of thepresent teaching. The operational flow diagram of FIG. 6 depicts theprocess of the translation server 400 of providing a web page in asecondary language in response to a user request and provides moredetails of steps 508-514 of FIG. 5. The operational flow diagram of FIG.6 begins with step 601 and flows directly to step 602.

Step 601 begins with a source HTML, page or first web content of step506 of FIG. 5. In step 602, at least one portion of the first webcontent may be parsed into translatable components. In step 603, it maybe determined whether the end of the file of the first web content isreached. If it is affirmative, then control flows to step 612.Otherwise, control flows to step 604. In step 604, it may be determinedwhether the translatable component that was parsed in step 602 is a textsegment. If it is affirmative, then control flows to step 606.Otherwise, control flows to step 614.

In step 606, a matching translated text segment may be looked up in acache. In step 607, it may be determined whether the matching translatedtext segment is found in the cache. If it is affirmative, then controlflows to step 609. Otherwise, control flows to step 618. In step 609, itmay be determined whether translation of the text segment is suppressedor not yet translated. If it is affirmative, then control flows to step621. Otherwise, control flows to step 610.

In step 610, the matching translated text segment may be set as a targetsegment. In step 621, the current text segment may be set as the targetsegment. In step 640, the target segment may be added to the output webcontent, or second web content (i.e., the translated HTML page or theoutput HTML page). In step 623, the second web content may be output forprovision to the user requesting the web page.

In step 612, it may be determined whether there is an incompletetranslation of the current web page, i.e., the first web content. If itis affirmative, then control flows to step 613. Otherwise, control flowsto step 611. In step 613, the current web page may be scheduled fortranslation. In step 611, the translation activity performed by thetranslation server 400 in servicing the current web page may be recordedin the translation database 406. In step 625, it may be determinedwhether the percentage of the current web page, i.e., the first webcontent, translated is above a threshold. If it is affirmative, thencontrol flows to step 624. Otherwise, control flows to step 626. In step624, the second web content or translated HTML, page may be output forprovision to the user requesting the web page. In step 626, the currentweb page or first web content may be output unchanged for provision tothe user requesting the web page.

In step 614, it may be determined whether the translatable componentparsed in step 602 is a translatable file, such as a PDF file, an imagefile, etc. If it is affirmative, then control flows to step 615.Otherwise, control flows to step 629. In step 629, it may be determinedwhether the translatable component parsed in step 602 is a link toanother translatable page. If it is affirmative, then control flows tostep 628. Otherwise, control flows to step 627. In step 627, a tag maybe added to the translated HTML page to indicate a link (this isdescribed in greater detail below). In step 628, the link may bemodified to redirect the URL (this is described in greater detailbelow).

In step 615, a translated file corresponding to the translatable filemay be looked up in a cache. In step 616, it may be determined whetherthe translated file was found. If it is affirmative, then control flowsto step 617. Otherwise, control flows to step 633. In step 633, thetranslated file may be looked up in the translation database 406. Instep 635, it may be determined whether the translated file was found. Ifit is affirmative, then control flows to step 634. Otherwise, controlflows to step 632. In step 634, the translated file that was found maybe stored in the cache. In step 632, an incomplete translation may berecorded in the translation database 406. In step 630, the original filemay be set as the target file. In step 631, the target file may be addedto the translated HTML page.

In step 617, it may be determined whether translation is suppressed forthe translatable file. If it is affirmative, then control flows to step630. Otherwise, control flows to step 636. In step 636, the translatedfile may be set as the target file. In step 618, a matching translatedtext segment may be looked up in the translation database 406. In step622, it may be determined whether the matching translated text segmentis found in the database. If it is affirmative, then control flows tostep 619. Otherwise, control flows to step 637. In step 619, thetranslated segment that was found is stored in the cache. In step 637,an incomplete translation may be recorded in the translation database406.

In step 638, it may be determined whether a machine translation of thetext segment can be performed. If it is affirmative, then control flowsto step 639. Otherwise, control flows to step 621. In step 639, themachine translation may be set as the target segment.

ASP Model

The translation server 400 can be presented in a variety of models. Forexample, in the Application Service Provider (ASP) model, thetranslation server 400 may convert full web pages or script files at atime and deliver them directly to the online user 416. Under this model,all links in a web page may be redirected through the translation server400.

Clicking on a link in a translated page results in the user agent (e.g.,a browser) request being sent to the translation server 400. Thetranslation server 400 in turn may request the original language pagefrom the original language web server 414, convert it to the alternatelanguage, and send it back to the user 416.

FIG. 7(a) is a block diagram depicting an exemplary serving process inan ASP model of the translation server 400, according to one embodimentof the present teaching. In a first step 702, the user 416 may click ona link of a web page in a first language on the web site 414. The linkpoints to a page to be translated. The translation server 400 mayreceive the request and process it. In a second step 704, thetranslation server 400 may forward the request to the web site 414, andin a third step 706, the web site 414 may provide the page to thetranslation server 400 for translation. In a fourth step 708, thetranslation server 400 may translate the page using the translations inthe translation database 406 and send the translated page to the user416.

FIG. 7(b) is a block diagram depicting an exemplary translation processof the translation server based on an ASP model when the content to betranslated is not present on the customer web site 414 or is notdelivered to the user via web site 414, according to an embodiment ofthe present teaching. The content to be translated in this embodimentincludes, but is not limited to, electronic mails and/or other types ofmessages (e.g., messages that use protocols and services such as SMTP,SMS and MMS). In a first step 704, an application (e.g., an electronicmail application or a text message application) running on web site 414,may send a request to the Translation Server 400 for translation of textcontent generated or delivered by the application. In a second step 706,if a translation is not found for all or a part of the message, theTranslation Server 400 may optionally store the content to be translatedand schedule it for translation. In a third step 708, the TranslationServer 400 may send the translated content to the user 416. In oneexample, step 3 may take place some time after step 2.

Web Service Model

In the web service model, the translated content may not be delivereddirectly to the online user 416. Instead, the customer's web site server414 may issue the request for translation to the translation server 400,which acts as a web translation service. Under this model, thetranslation server 400 can convert full pages or just specific textsegments and/or files. When directly translating text segments or files,multiple translation requests can be issued, one per segment or file, ormultiple segments and files can be translated in a single batchedrequest.

FIG. 8(a) is a block diagram depicting an exemplary serving process in aweb service model of the translation server 400, according to anembodiment of the present teaching. In a first step 802, the user 416may click on a link of a web page in a first language on the web site414. The link points to a page to be translated. The web site server 414may receive the request and processes it. In a second step 804, the website 414 may provide the page to the translation server 400 fortranslation. In a third step 806, the translation server 400 may providethe translated page to the web site 414. In a fourth step 808, the website 414 may send the translated page to the user 416.

FIG. 8(b) is a block diagram depicting an exemplary serving process in aweb service model of the translation server when the content to betranslated is not present on the web site 414 or is not delivered to theuser via the web site 414, according to an embodiment of the presentteaching. The content to be translated in this operational modeincludes, but is not limited to, electronic mails and other types oftext messages (e.g., ones that use protocols and services such as SMTP,SMS and MMS). In a first step 804, a customer application (e.g., anelectronic mail application or a text messaging service application)running on web site 414, may send content to be translated (e.g., anemail or a message) to the Translation Server 400 for translation. In asecond step 806, if a translation is not found for either all or a partof the content to be translated, the Translation Server 400 mayoptionally store the content and schedule it for translation. In a thirdstep 808, the Translation Server 400 may send the translated contentback to the customer application running on web site 414. In oneexample, step 3 may take place some time after step 2. In a fourth step810, the customer application may send the translated content back tothe user 416.

Hosting and Management

The hosting and management model may define who deploys and manages thehardware and operating system software in which the software componentsof the present teaching reside. There are two hosting and managementmodels: hosted & managed, and managed only. Alternately, the softwarecan be directly to the customer, and the customer is responsible forboth the hosting and management.

The hosted and managed model may be a fully outsourced model in whichone entity hosts the service and all translated data. Under this model,one entity may deploy the translation server 400 and WebCATT 408software on its own hardware. All hardware and software may beprovisioned and maintained by this entity, so the customer web site 414has no responsibility for any hardware or software related to theservice. In this model, the hosting entity may be responsible for: 1)provisioning, installing, configuring and maintaining all hardware,including communication to the Internet 412, 2) installing, configuringand maintaining all operating system, web server and database serversoftware, 3) installing, configuring and managing on an ongoing basisthe translation server 400 and WebCATT 408 software, and 4) maintainingstaff and subcontractors that use the WebCATT 408 software to performthe translations that maintain the alternate language site in sync withthe original language site.

In the managed only model, the translation server 400 and WebCATT 408software may be installed on the customer web site's hardware. In thismodel the customer web site 414 maybe responsible for: 1) provisioning,installing, configuring and maintaining all hardware, includingcommunication to the Internet 412, and 2) installing, configuring andmaintaining all operating system, web server and database serversoftware. The managing entity may be responsible for: 1) installing,configuring and managing on an ongoing basis the translation server 400and WebCATT 408 software, and 2) maintaining staff and subcontractorsthat use the WebCATT 408 software to perform the translations thatmaintain the alternate language site in sync with the original languagesite.

Dedicated Vs. Shared Servers

The components of the present teaching can be deployed in dedicated orshared server environments. In a shared environment multiple customerweb sites may share the same hardware. In a typical scenario, multipletranslation servers 400 may be installed in the same web server 402,which connects to a database server containing the database 406 oftranslated data. A single WebCATT 408 software installation may also beshared by multiple customers. This setup is cost efficient and can beused for small and medium size sites with low-to-moderate web sitetraffic.

In a dedicated environment all hardware may be dedicated to one customerweb site 414. This may be necessary for large organizations with heavyweb site traffic and large amounts of text to be translated. In thiscase, either a single web server 402 or a cluster of web servers may bededicated to the customer. The database server normally may also bededicated to the customer. Dedicated servers may be used to assureguaranteed bandwidth for the customer and simplify keeping track ofbandwidth usage for management and billing purposes.

Parsing & Translation

The system of the present teaching may not save or maintain translatedpages, except, e.g., in temporary caches for the purpose of improvingresponse performance. Although, this may be useful for sites with staticcontent, it becomes unmanageable for sites whose content is generateddynamically from database information in response to a user's request.Instead, the present teaching may be designed to store only thosecomponents within a web page that require translation, i.e.,translatable components.

Parsing is the process of breaking-up an HTML, page submitted fortranslation into its translatable and non-translatable components.Non-translatable components simply pass through the system unchanged(except for URLs that need rewriting). Translatable components areprocessed and replaced by their translated counterparts if available.There are generally two types of translatable components in a web page:text segments and files. A translatable component may include any one ofa text segment, an image file with text to be translated, a multimediafile with text or audio to be translated, a file with text to betranslated, a file with image with to be translated, a file with audioto be translated and a file with video and with at least one of text andaudio to be translated.

A text segment is a chunk of text on a page. A text segment can rangefrom a single word to a paragraph or multiple paragraphs. A file is anytype of external content that resides on a file, is linked from withinthe page, and may require translation. Typical types of linked filesfound in web pages include, but are not limited to, images, PDF files,MS Word documents, and Flash movies.

Below is an example of a very simple HTML page:

<html><head><title>Widget Product Information</title></head><body>Widget<b>Model# 123</b> <p>This widget is very useful for manychores around the house. <p><img src=“img/widget_picture.gif”alt=“Product photo”> <p><a href=“http://www.abcwidgets.com”>Click hereto return to the home page</a></body></html>

The above example page may be parsed into the following six textsegments: 1) ‘Widget Product Information’, 2) ‘Widget’, 3) ‘Model# 123’,4) ‘This widget is very useful for many chores around the house’, 5)‘Product photo’, and 6) ‘Click here to return to the home page’. Theabove example page would further be parsed into the following one file:img/widget_picture.gif.

By default the parsing system may break-up text segments taking intoconsideration the surrounding HTML tags in the page. In the aboveexample, the sentence ‘Widget Model# 123’ was broken-up into twosegments because there was an HTML bold tag (<b>) in the middle of it.However, the parsing system may be flexible and allow defining, whichHTML tags are formatting tags that do not break up text segments. So, ifwe define the bold tag as a formatting tag, then the example page wouldinstead be parsed into the following five text segments: 1) ‘WidgetProduct Information’, 2) ‘Widget <b>Model# 123</b>’, 3) ‘This widget isvery useful for many chores around the house’, 4) ‘Product photo’, and5) ‘Click here to return to the home page’.

The bold tags now became part of the second text segment, allowing thetranslator to place them in the correct location in the alternatelanguage. For example, translating the text segment ‘Widget <b>Model#123</b>’ to Spanish will result in flipping the order of the ‘Widget’and ‘Model’ words within the sentence. Since the bold tag is part of thetext segment, it can be moved to still bold the word ‘Model’, as shown:<b>Modelo No. 123</b> de Artefacto

Below is an example of how the example page is converted to Spanish bythe translation server 400:

<html><head><title>Informacion del Artefacto</title></head> <body><b>Modelo No. 123</b>del Artefacto <p>Este artefacto es muy útil paratodo tipo de trabajos en la casa. <p><imgsrc=“http://espanol.abcwidgets.com/img/ ES_24.gif” alt= “Foto delProducto”> <p><a href=“http://espanol.abcwidgets.com”>Haga clic aquipara regresar a la pagina principal</a></body></html>

In order to convert the page, the translation server 400 may performseveral changes to the page. Each text segment may be replaced with acorresponding translation. It is noted that the text of the imagedescription (‘Product photo’) placed in the ‘all’ attribute of the imagetag may be recognized as a text segment and translated. The translationserver 400 can recognize text segments inside attributes of HTML tags,such as the text in buttons of a form.

Further, the URL of the image tag may be replaced to point to atranslated image file. The translation server 400 may only execute thisaction if a translated file has been defined (since many images do nothave text and thus do not require translation), otherwise it may notchange the URL of the image (except to make the URL absolute ifnecessary). In this example, it is assumed that the ‘ES.sub.--24.gif’image file was defined in WebCATT 408 as the translation for the‘widget_picture.gif’ file.

The URL of the home page link may be rewritten from‘http://www.abcwidgets.com’ to ‘http://espanol.abcwidgets.com’ in orderto redirect it to the translation server 400. When the online userclicks on the ‘Click here to return to the home page’ link, the requestmay go directly to the translation server 400, and the home page mayalso be translated. This process is called “implicit navigation”, and itis explained in more detail below.

Implicit Navigation

Implicit navigation is a translation server 400 feature that keeps anonline user 416 in the alternate language as he/she browses a web site.Implicit navigation can be made automatically because the domain name ofa translated site may be different from the domain name of the originallanguage site, or if necessary may be implemented by rewriting the URLsin the applicable links inside a page as the page is being translated,so they are redirected to the translation server 400. As a result, notonly is the page translated, but also all applicable links to othertranslated pages within the page may be modified when needed ifnecessary, so that when the consumer clicks on the linked page, thetranslation is available.

To rewrite a link, the translation server 400 may change the domain namein the original URL with the domain name of the translation server 400.When a rewritten link is clicked, the request may go to the translationserver 400, which computes the original URL to be translated based onthe path and/or its internal mappings and request the page to betranslated from this URL. The translation server 400 then may convertthe page received to the alternate language and deliver the translatedpage to the consumer directly.

The scope of implicit navigation can be pre-defined by domain and/or URLpatterns. In a typical scenario, only pages being served from a specificdomain(s) may be translated. In the ABC Widgets example, if the implicitnavigation domains are defined as abcwidgets.com and abcwidgets.net,then only URLs within those two domains will be rewritten. If a moregranular translation is required, such as when translating only part ofa web site, then URL patterns can be used. For example, if ABC Widgetswishes not to translate the careers and investor relations sections oftheir site, then the following two example Exclude URL patterns could beused: 1) abcwidgets.com/careers/ and 2) abcwidgets.com/investor/.

Any URLs for pages residing within the above two paths may not berewritten and thus never translated. On the other hand, if ABC Widgetswishes only to translate its online product catalog, then the followingexample Include URL pattern could be used: abcwidgets.com/catalog/.

In that case, only pages residing within the abcwidgets.com/catalog/pathare rewritten and thus translated. Include and Exclude URL patterns maybe combined to better define the scope of the translation. Implicitnavigation can also be controlled from within the HTML to be translatedthrough the use of directive tags or directive attributes. These areexplained in detail in below.

URL Translation and Optimization

The system according to the present teaching enables translation andoptimization of URLs in order to improve the ranking of the translatedpages on search engine indexes. In the case that the original URLs onthe customer web site 414 contain words or phrases in the first languagethat may be relevant or optimized for search engines, such words andphrases can be translated by the Translation Server 400 into the secondlanguage to derive translated URLs on the translated web site. Thisallows the translated web site in the second language to maintain thesearch engine URL optimization of the customer web site 414.

In some embodiments, to achieve such URL translation, the original URL,representing the web content in the first language, is processed toidentify translatable URL component(s) and for each such translatableURL component, a translated URL component can be obtained throughtranslation into the second language, so that such a translated URLcomponent can be used to replace the corresponding translatable URLcomponent in the original URL. A translated URL may then be derived oncethe relevant translatable URL component(s) is replaced withcorresponding translated URL component(s). In some embodiments, thetranslated URL components can be stored for future re-use. This URLtranslation process can be applied to both search engine optimized URLsor other URLs that have not been search engine optimized

However, quite often, dynamic and e-commerce websites use URLs that arenot search engine optimized. It is common for e-commerce sites to usecryptic, generic or repetitive page names combined with parameters.Below is an example of such a URL which displays information aboutSONY'S product BRAVIA 46″ LCD HDTV:

http://www.abcwidgets.com/site/olspage.jsp?skuId=9276286&productCategoryId=abcat0101001&type=product&id=1218073534751&session=12345

Search engines, such as GOOGLE, place a great emphasis on keywords foundon a URL versus keywords found within the content of a page. As aresult, it would be beneficial for websites to place search keywords inthe actual URL of the page and minimize the use of other, e.g., crypticparameters. However, due to the restrictions of e-commerce enginesand/or the great difficulty associated with changing the URL structureof a website, this is rarely done.

The system according to the present teaching provides a solution to thisproblem by generating search engine optimized URLs in the secondlanguage that map to the customer web site's 414 non-optimized originalURLs. For example, on a Spanish site the above ABC Widgets SONY BRAVIA46″ LCD HDTV original URL can be translated into:

http://espanol.abcwidgets.com/televisiones-sony-bravia-xbr-clase-46-1080p-240hz-1cd-hdtv-kd1-46xbr9/?session=12345

The above translated URL is optimized to contain keywords that includethe category, manufacturer, brand model number, and short description ofthe product in Spanish, which makes the URL optimized for searchengines. The Translation Server 400 may optimize an original URL byidentifying (disclosed below) search engine relevant content alreadypresent on the page in the first language and placing the correspondingcontent in the second language on the URL of that translated page. Forexample, below is the HTML content that the ABC Widgets SONY BRAVIA 46″LCD HDTV original URL returns in the first language:

<html> <head> <title>Televisions - Sony - BRAVIA XBR 46″ Class / 1080p /240Hz / LCD HDTV - KDL- 46XBR9</title> <meta name=“keywords”content=“SONY, BRAVIA XBR 46″ Class / 1080p / 240Hz / LCD HDTV,KDL-46XBR9, LCD Televisions, Televisions”> <meta name=“description”content=“ SONY BRAVIA XBR 46″ Class / 1080p / 240Hz / LCD HDTV: 4 HDMIinputs; Ethernet port; black cabinet; 16:9 aspect ratio”> </head> <body><h1>Sony - BRAVIA XBR 46″ Class / 1080p / 240Hz / LCD HDTV</h1><p>Product Description <p>With 4 HDMI inputs, a USB port and Ethernetconnectivity, the Sony BRAVIA XBR 46″ flat-panel LCD HDTV provides anideal centerpiece for your multimedia home theater system. <p>Get accessto great Instant Content on this LCD HDTV. Connect to the Internet andyou will have instant access to stream movies, listen to music and awide variety of content through your HDTV. </body> </html>

In the above page, there are several elements that are search enginerelevant and which can be placed in the URL for optimization. Theseelements include the document title, the text within the H1 tags, themeta-description, the meta-keywords and other text within the body. TheTranslation Server 400 can automatically pick the most relevant elementin the page based on which element better describes the content of thepage, or such element can be manually predefined. Alternatively, themost relevant element may be determined in a semi-automated manner. Forexample, the Translation Server 400 may automatically detect candidatesof relevant elements, and a human operator may then interact with theTranslation Server 400 to select one or more candidates of relevantelements as the most relevant element to be used to generate optimizedURL. The human operator may also manipulate or even edit some candidaterelevant elements to make them, e.g., capitalized, boldfaced,highlighted, etc. In addition, any arbitrary content in the page can beflagged as the most relevant for URL optimization via the use ofDirective Tags.

For instance, in this example, the title of the document is identifiedas the most search engine relevant element in the page, which is shownagain below:

<Title>Televisions-Sony-BRAVIA XBR 46″ Class/1080p/240 Hz/LCDHDTV-KDL-46XBR9</title>

Once the most relevant element is identified, the Translation Server 400may then look for a matching translation of the text of that element inthe second language. Translation of this text typically occurs withinthe normal workflow of the translation of the page. For the givenexample, the Spanish translation of the above title is:

<title>Televisiones-Sony-BRAVIA XBR Clase 46″/1080p/240 Hz/LCDHDTV-KDL-46XBR9</title>

The translation of the title is then converted into a URL friendlyformat to derive a translated search engine optimized path. In someembodiments, this is done by performing e.g., the following steps:

1. Replacing spaces, underscores and any other characters separatingwords with dashes or another character that search engines consider as aseparator of words in a URL.

2. Removing all characters that are not search engine friendly, such asnumbers and symbols.

3. Optionally lowercasing all letters.

4. Optionally shrinking the size to a maximum size at the closest wordboundary.

5. Optionally removing or adding a string of text.

For this example, the resulting translated search engine optimized pathobtained from the translated title is:

/televisiones-sony-bravia-xbr-clase-46-1080p-240 hz-lcd-hdtv-kdl-46xbr9

The Translation Server 400 may then use the translated search engineoptimized path to generate a search engine optimized URL in the secondlanguage. In some embodiments, the process to achieve that may start bybreaking up the original URL on the customer web site into its originhost, path, and query string elements, as shown below:

1. Origin Host: http://www.abcwidgets.com

2. Origin Path: /site/olspage.jsp

3. Origin-Query-String:

skuId=9276286&productCategoryId=abcat0101001&type=product&id=121807353475-1&session=12345

The query string is then further split into a number of parameters, eachof which may be a name=value pair, e.g.,:

skuId=9276286

productCategoryId=abcat0101001

type=product

id=1218073534751

session=12345

Each parameter may be examined to determine whether the value of theparameter contributes to an identification that uniquely identifies thecontent, in this case a product. In the given example, all theparameters, except the session parameter, are considered to contributeto an identification that can uniquely identify the product. A sessionparameter is specific to a user's session and may change over time.Parameters that contribute to an identification that uniquely identifiesthe content may be included in the search engine optimized URL andparameters that do not may be excluded. For the given example, thefollowing parameters are either included or excluded:

Included Parameters:

skuId=9276286

productCategoryId=abcat0101001

type=product

id=1218073534751

Excluded Parameters:

session=12345

The origin path, together with the included parameters, can be mapped tothe translated search engine optimized path, which can then be used inplace of the origin path and included parameters. The origin host may bereplaced by the host name of the translated site. Finally the excludedparameters may be added back to the translated URL after it has beenoptimized. For example, the resulting translated search engine optimizedURL in the second language is shown below:

http://espanol.abcwidgets.com/televisiones-sony-bravia-xbr-clase-46-1080p-240hz-lcd-hdtv-kdl-46xbr9?session=12345

As mentioned before, the search engine optimized path can also beobtained from another part of the document instead of the title. Thiscan include the H1 header, a meta-description, or any arbitrary contentin the page identified by specific Directive Tags.

In this example, if the search engine optimized path is obtained fromthe H1 header, then the resulting translated SEO optimized URL would be:

http://espanol.abcwidgets.com/sony-bravia-xbr-clase-46-1080p-240hz-lcd-hdtv?session=12345

Below is an example where arbitrary content in the page is defined asthe most search engine relevant for URL optimization via exemplary“mp_trans_seo_url_title” Directive Tags. In this example, the tags areused around the product description:

Product Description

<!--mp_trans_seo_url_title_start-->

<p>With 4 HDMI inputs, a USB port and Ethernet connectivity, the SonyBRAVIA XBR 46″ flat-panel LCD HDTV provides an ideal centerpiece foryour multimedia home theater system.

<!-- mp_trans_seo_url_title_end-->

With the above tags, the resulting translated search engine optimizedURL becomes:

http://espanol.abcwidgets.com/con-4-entradas-hdmi-un-puerto-usb-y-conectividad-ethernet-la-television-sony-bravia-xbr-46-flat-panel-lcd-hdtv-le-brinda-un-perfecto-centro-de-atencion-para-su-sistema-de-teatro?session=12345

When the Translation Server 400 receives a request containing a searchengine optimized URL, the Translation Server 400 may automaticallyconvert the search engine optimized URL into the equivalentnon-optimized original URL representing the customer web site based onthe above described mappings in order to retrieve the actual content fortranslation. To convert the translated URL back to the original URL, insome embodiments, the Translation Server 400 looks up the translatedoptimized path in the database and finds the corresponding origin pathand included parameters. It then replaces the translated optimized pathwith the origin path and adds the included parameters to the querystring.

To aid this process, in some embodiments, an identifier that uniquelyidentifies the mapping in the database may be added to the translatedsearch engine optimized URL. For example, if the origin path and theincluded parameters are mapped to the translated search engine optimizedpath in the database using an identifier, e.g., a numeric identifier,then this identifier can be added to the translated search engineoptimized URL. Using such an identifier in the translated search engineoptimized URL improves the performance in looking up the mapping, makingthe lookup operation resilient to changes in the translated textincorporated in the URL. Below is an example that shows a numericidentifier of 100 added to the end of the translated search engineoptimized URL in the second language:

http://espanol.abcwidgets.com/televisiones-sony-bravia-xbr-clase-46-1080p-240hz-lcd-hdtv-kdl-46xbr9/100/?session=12345

In the above example, even if the translation for “televisions” ischanged from “televisiones” to “tvs” in the database, the use of anidentifier (rather than the translated text) to lookup the mappingensures that the correct origin path and parameters are correctlyretrieved from the database. The identifier in the URL may also beencoded to reduce the required space needed for the URL.

E-Commerce Database Language Enabling

The system of the present teaching may enable users to access the sameoriginal language e-commerce database in multiple languages. Since thetranslation server 400 may process web pages after they have left thecustomer web site 414, but before they reach the user 416, it may notaffect a web server's e-commerce technology. As a result, the same website 414 can be accessed in multiple languages, and all users may accessthe same e-commerce database simultaneously.

For example, an auction web site can allow users in different countriesto bid on the same item. Each user can view the site and bid on the itemin his/her native language. Since all bids from the different countriesare actually hitting the same web site and the same e-commerce enginethrough the translation server, all bids occur in real time, and eachuser can see in real- time what all the other users in all othercountries are bidding.

Text Segment Locking

Occasionally, the meaning of a word or phrase may change depending onthe context in which it's being used. It is also possible that thetranslation itself may vary depending on the context or placement of atext segment, even if the original meaning does not change. As a result,it may be necessary to specify multiple translations for the same wordor phrase, one for each usage context. The system of the presentteaching allows translators to do this by providing the ability to“lock” text segments together. When two or more text segments are lockedtogether they may be used only when the exact translation sequence isfollowed.

For example, the translation to Spanish of the text segment “VirtualBrochures” can vary, depending on where it is used. Below is thissegment used in an English HTML sentence: <b>Virtual Brochures</b>aregreat. The corresponding translation to Spanish is: <b>Los FolletosVirtuales</b>son excelentes. Another example of a segment used in anEnglish HTML sentence: There are many great <b>Virtual Brochures</b>.The corresponding translation to Spanish is: Hay muchos excelentes<b>Folletos Virtuales</b>

For this example, it is assumed that the HTML bold (<b>) tag is notdefined as a formatting tag and, therefore, forces each sentence aboveto be broken up into two text segments each. As a result, the phrase“Virtual Brochures” becomes a separate text segment that requires adifferent translation for each case. Using the text segment lockingfeature in WebCATT 408, the translator locks the “Los FolletosVirtuales” translated segment with the “son excelentes” translatedsegment in the first sentence, and the “Hay muchos excelentes”translated segment with the “Folletos Virtuales” translated segment inthe second sentence.

At conversion time, when the translation server 400 encounters the“Virtual Brochures” segment in the first sentence, it looks up acorresponding translated segment and gets back two potential matches:“Los Folletos Virtuales” and “Folletos Virtuales”. It then proceeds tolook up a translated segment for the next segment “are great” and getsback “son excelentes”. Since “son excelentes” is locked to “Los FolletosVirtuales”, the translation server 400 is able to determine that “LosFolletos Virtuales” is the correct translation to the previous segment“Virtual Brochures”.

Form Posting

The translation server 400 may transparently handle form submissions viaGET or POST methods. This means that all form data may be forwarded tothe original URL that processes the form and that the response page maybe converted to the alternate language.

JavaScript/VBScript Handling

The translation server 400 is capable of translating text segments andfiles located inside JavaScript code, VBScript code, CSS code, XML, AJAXmessages, AMF code and many other complex web based technologies andformats by parsing the code or message and recognizing translatablecomponents.

Translation of content inside files, such as JavaScript, CSS andVBScript, is also supported. A script included file may be downloaded bythe user agent (e.g., a browser) in a separate HTTP request and includedin the web page as if it had appeared within the page. Script includedfiles may be handled in the same manner as implicit navigation instandard links within the page. The user agent may request the scriptincluded file from the translation server 400, which will compute theURL of the original script included file and request it from itslocation. The translation server 400 then may read the file, perform theappropriate conversions, and deliver the modified file to the user agentfor inclusion in the web page.

JavaScript included files may be specified using the source (src)attribute in the <SCRIPT>tag, as shown: <script language=“javascript”src=“menthjs”></script>

Shown is an example of how the above script tag is rewritten so thecontent inside the JavaScript include file is translated: <scriptlanguage=“javascript”src=“http://espanol.abcwidgets.com/menu.js”></script>

Directive Tags and Attributes

Directive tags and directive attributes are special HTML tags andattributes that allow more granular control over the translation,implicit navigation and other translation server behavior within in aweb page. Directive tags are special HTML comments tags that are ignoredby the user agent (e.g., a browser), but provide specific instructionsto the translation server 400. Directive attributes are specially namedattributes placed within an HTML tag that are also ignored by the useragent (e.g., a browser), but provide specific instructions to thetranslation server 400 that apply only to the tag in which the attributeis placed.

Translation control tags and attributes can be used to specify sectionson a web page that should not get translated. One application oftranslation control tags is to delimit personal information, such as aperson's name, address, credit card numbers, etc. that may show up in aweb page, but which may not need to be processed—it may simply passthrough the translation server 400 without being translated orstored—for security and privacy issues.

Following is an exemplary list of directive tags. The directive tag“mp_trans_partial_start & mp_trans_partial_end” signals the start andend of a partial translation section. This tag may be used at the top ofa web page in conjunction with section translate tags to selectivelytranslate sections of a page. The directive tag “mp_trans_enable_start &mp_trans_enable_end” signals the start and end of a section to betranslated within a partial translation section. All text and fileswithin this section may be translated. The directive tag“mp_trans_disable_start & mp_trans_disable_end” signals the start andend of a section not to be translated when in normal translation mode.The directive tag “mp_trans_machine_start & mp_trans_machine_end”signals that any text segments enclosed within the tags may be machinetranslated in the event that a human translation is not available.

Following is an exemplary list of directive attributes. The directiveattribute “mpdistrans” disables translation of a file or of translatabletext in a tag, such as alt, keywords or description meta-tag, or formbuttons.

Below is an example of usage of translation control directive tags andattributes:

<html><head>

<meta name=“description” content=“This page description istranslated”><meta mpdistrans name=“keywords” content=“These keywords arenot translated, keyword1, keyword2, keyword3, keyword4, keyword5”>

<title>This title is translated</title></head><body>

This text and the image widget1.gif below are translated.

<img src=“img/widget1.gif”alt=“This image description is translated”>

<p><img mpdistrans src=“img/widget2.gif” alt=“This image and thisdescription are NOT translated because of the mpdistrans attribute”>

<!--mp_trans_disable_start-->

This text and the image widget3.gif below are NOT translated becausethey are inside a translation disabled section.

<img src=“img/widget3.gif.gif” alt=“This image description is NOTtranslated”>

<!--mp_trans_disable_end-->This text is translated.

<!--mp_trans_partial_start-->This text is NOT translated because it isinside a partially translated section and not specifically designated astranslatable content.

<!--mp_trans_enable_start-->This text is translated because it is insidea partially translated section and it is specifically designated astranslatable content.

<!--mp_trans_enable_end-->This text is NOT translated because it isinside a partially translated section and not specifically designated astranslatable content.

<!--mp_trans_partial_end-->This text is translated.</body></html>

Following is an exemplary list of directive attributes for implicitnavigation control. The directive attribute “mpnav” enables implicitnavigation for listed attributes in the tag. This attribute can be usedfor tags that do not normally contain URLs, but actually do containURLs. The directive attribute “mpdisnav” disables implicit navigationfor all attributes or only listed attributes of the tag. The directiveattribute “mporgnav” forces original navigation for all attributes oronly listed attributes of the tag. Original navigation may removeredirection to the translation server if found, otherwise it may leavethe link intact. This directive attribute is discussed below withreference to one-link deployment.

Below is an example of usage of implicit navigation control directiveattributes.

<html><body>ABC Widgets Home Page  <p><a href=“widgetsjsp”>See alluseful widgets</a>  <p><a mpdisnav href=“uselesswidgetsjsp>See uselesswidgets</a>  <p><form action=“showwidget.jsp” method=“post”> <selectname=“WidgetSer”>  <option value SELECTED>Select a widget toview:</option>  <option mpnav=“value” value=“widget1.jsp”>Widget1</option>  <option mpnav=“value” value=“widget2.jsp”>Widget 2</option> </select></form></body></html>

The translation server 400 may process the above page as follows:

 <html><body>Pagina Principal de ABC Widgets  <ahref=“http://espanol.abcwidgets.com/widgets.jsp”>Ver artefactosútiles</a>  <p><a mpdisnavhref=“http://www.abcwidgets.com/uselesswidgets.jsp>Ver artefactosinútiles</a>  <p><formaction=“http://espanol.abcwidgets.com/showwidget.jsp” method=“pose”> <select name=“WidgetSel”>  <option value SELECTED>Escoga un artefactopara verlo:</option>  <option mpnav=“value”value=“http://espanol.abcwidgets.com/ widget1.jsp”>Artefacto 1</option> <option mpnav=“value” value=“http://espanol.abcwidgets.com/widget2.jsp”>Artefacto 2</option>  </select></form></body></html>

It can be seen above that implicit navigation was not performed for theanchor (<A>) tag with the mpdisnav attribute. As a result, when the userclicks on the ‘Ver artefactos intútiles’ link, the uselesswidgets.jspweb page is not redirected to the translation server 400 and therefore,it is not translated. Furthermore, the mpnav attribute placed in the two<OPTION> tags instructed the translation server 400 to perform implicitnavigation on the URL specified in the value attribute of each tag.

“One-Link” Deployment

One aspect of the present teaching is to eliminate or minimize theworkload of a customer web site's IT department in order to deploy analternate language web site. One-link deployment may allow a customer todeploy the alternate language web site by simply placing onelanguage-switching link in the home page, navigation menu, or any otherappropriate area of the original language site.

In some embodiments, the one-link deployment may be a combination of twofeatures: (1) automatic flipping of the language-switching link, and (2)implicit navigation to maintain the user in the alternate language.Automatic flipping of the language-switching link is specified by usingthe exemplary mporgnav directive attribute in the language-switchinglink. The mporgnav directive attribute may instruct the translationserver 400 to rewrite the URL to support automatic language switching.

Below is an example of a very simple home page:

<html><body>Welcome to the ABC Widgets Home Page  <p><ahref=“widgetsjsp”>Click here to see all widgets we sell<a> </body></html>

In some embodiments, a mirror Spanish language web site may be deployedby placing one link in the home page that redirects the home page to ABCWidget's translation server 400. Below is an example of the above homepage with the new language-switching link added:

 <html><body>Welcome to the ABC Widgets Home Page<p>  <a mporgnavhref=“http://espanol.abcwidgets.com”> Click here to see this site inSpanish</a>  <p><a href=“widgets.jsp”>Click here to see all widgets wesell</a>  </body></html>

When a user clicks the ‘Click here to see this site in Spanish’language-switching link, the translation server 400 may return the homepage translated, as shown below:

<html><body>Bienvenidos a la Pagina Principal de ABC Widgets<p>  <amporgnav href=“http://www.abcwidgets.com”>Haga clic aqui para ver estesitio web en Ingles</a><p>  <ahref=“http://espanol.abcwidgets.com/widgets.jsp”>Haga clic aqui para vertodos los artefactos que vendemos</a></body></html>

As shown above, in addition to translating the page, the translationserver 400 may also rewrite the URL in the language-switching link andperform implicit navigation of all other URLs in the page. Thetranslation server 400 may rewrite the URL in the language-switchinglink so that the translation server 400 redirection is removed. Theexemplary mporgnav directive attribute may be used to instruct thetranslation server 400 to do this. In addition, the link text ‘Clickhere to see this site in Spanish’ may be translated as ‘Haga clic aquipara ver este sitio web en Ingles’ (which means ‘Click here to see thissite in English’). This automatic and simultaneous change of both theURL and the text (or image) in the language-switching link by thetranslation server 400 is what allows the user to flip back-and-forthbetween English and Spanish.

Implicit navigation may be also performed in all the links on the page.In the above example home page, it was performed on the widgets.jsppage. As a result, when a user clicks on this rewritten link, thewidgets.jsp page is in turn translated and implicit navigation performedon all of its links within the abcwidgets.com domain. This process maybe repeated so that the user is always navigating the site in thealternate language.

Customized Content

The translation server 400 may allow delivering customized contentaccording to the language and/or location in which a user is viewing thesite. In some embodiments, when the translation server 400 requests aweb page for translation, it sends two cookies to the original webserver: one for language and another one for the country. The value ofthe language cookie is a 2 or 3-letter language code in compliance withthe ISO 639 standard. The value of the country cookie is a 2-lettercountry code in compliance with the ISO 3166 standard.

Web site server software can determine if a page is being viewed in analternate language and/or a different country by checking for thesecookies. For example, by checking that the language cookie exists, andthat its value is ‘ES’, a web server can determine that a page is beingserved in Spanish and customize the content being served, such asshowcasing items that appeal more to Hispanics. In addition, if acompany maintains operations in multiple countries, then it can use thecountry cookie to determine the country and show only products sold orshipped to that country.

Internal Search Engine Integration

When an online user 416 who is viewing a web site 414 in an alternatelanguage performs an internal site search, it is natural for the user toenter the search keyword(s) in the alternate language. When thetranslation server 400 forwards the search keyword(s) to the originalweb site, the search engine may not be able to find any matchingresults, or might deliver incorrect results. This occurs because the webserver search engine is matching the keyword(s) in the alternatelanguage against a search index of keywords that are in the originallanguage.

The translation server 400 provides a solution to this problem byperforming a real-time reverse machine translation on the searchkeyword(s) and forwarding the keyword(s) to the web server search enginein the original language. Reverse machine translation may be configuredso it may be performed only on the specific keyword field(s) of thesearch form(s) in a web site.

Internet Search Engine Compatibility

The system of the present teaching is compatible with all Internetsearch engines, such as GOOGLE or ALTAVISTA. These search enginesutilize content from both the body and head of the HTML document toindex a web page. To ensure transparent compatibility with Internetsearch engines, the system of the present teaching may translate allapplicable text in the head of the document. This includes, but is notlimited to the page title, the page description meta-tag, and thekeywords meta-tag.

Integration with Machine Translation

In some embodiments, the translation server 400 uses real-time machinetranslation in the event that a human translation is not (yet)available. In addition, machine translation can be used as input orstarting point for human translation or human post-editing. In thatcase, a human translator or editor post-edits the translation generatedby machine translation to improve the translation.

Efficient Caching

In some embodiments, frequently used data is cached in memory tominimize repeated access to the database 406. The translation server 400may make extensive use of memory caches to improve response performance.This includes, but is not limited to a text segment cache, a file cache,and a page cache.

As discussed herein, the translation server 400 may not require ITintegration with an existing web site infrastructure. The presentteaching may convert the outbound HTML stream after it has left theclient web server 414. Thus, there is no need to re-architect anexisting web site or build a separate web site for alternate language.Further, there is no client storage or management of translated datarequired. Translated data may be managed and maintained by the WebCATT408 software outside of the web site's database.

The translation server 400 may also work with any client web serverhardware and software technology infrastructure. Further, it allows forevolution of the existing client's hardware and software technologyinfrastructure. Moreover, deployment of the present teaching requiresminimal effort as a reduced amount of client IT resources are required.One-link deployment allows the client to place one link on the web site414 to provide access to the alternate language web site. Therefore,deployment is rapid and cost effective.

WebCATT

The WebCATT (Web Computer Aided Translation Tool) 408 is a web basedGraphical User Interface (GUI) application that is used to perform andmanage human translations. The tool may be built specificallytranslation of web content. It can be used by professional translatorsto translate web site translatable components and by managers to managethe translation process. Since WebCATT 408 is a web-based applicationthat is accessed via the Internet 412, translators and managers can belocated in different geographical areas.

WebCATT 408 may be similar to other computer aided translation toolsused by professional translation service organizations. WebCATT 408 maysupport localization, text recognition, fuzzy matching, translationmemory, internal repetitions, alignment, and a glossary/terminologydatabase. WebCATT 408 may be designed for web site translation andinclude other features optimized for web translation, such as What YouSee Is What You Get (WYSIWYG) HTML previewing and support forimage/graphic translation.

WebCATT 408 may organize the translation workload into web pages. A webpage may be, for example the HTML, XML, JavaScript, CSS or other type ofweb content generated by a specific URL address, regardless of whetherthat content is static (i.e., physically resides in the web server in afile), or dynamic (i.e., the content is generated dynamically bycombining information from a database and HTML templates). Dynamic pagesthat are dependent on session information (i.e., a shopping cartcheckout page) may be also supported.

Within a web page there are two types of units of translation thattranslators work with: text segments and files. A text segment is achunk of text on the page. A text segment can range from a single wordto a paragraph or multiple paragraphs. A file is any type of externalcontent that resides on a file, is linked from within the page, and mayrequire translation. Typical types of files found in web pages include,but are not limited to images, PDF files, MS Word documents, and Flashmovies. A file may be translated by uploading a replacement file thathas all text and/or sounds translated.

FIG. 9 is a screenshot of an exemplary WebCATT interface used forviewing the content of a web page, in one embodiment of the presentteaching. FIG. 9 shows a display area 902 in which a web page includingtranslatable component in a first language (in this case, English) isdisplayed. Also shown in FIG. 9 is a section 904 including informationassociated with the web page displayed in display area 902, such as pagestatus, page URL, page ID, etc. Further shown in FIG. 9 is a section 906including statistics associated with the web site from which thedisplayed web page is garnered, such as the number of files translated,the number of segments translated, the number of translationssuppressed, etc.

FIG. 10 is a screenshot of an exemplary WebCATT interface used forviewing a translatable component along with a corresponding translation,in one embodiment of the present teaching. FIG. 10 shows a display area1002 in which an original image file translatable component is displayedin a first language (in this case, English). FIG. 10 shows a displayarea 1004 in which a translated image file is displayed in a secondlanguage (in this case, Spanish). Also shown in FIG. 10 is a section1006 including information associated with the file displayed in displayareas 1002-1004, such as file status, file URL, file ID, etc. FIG. 10shows how WebCATT 408 allows a user to view a translatable componentalongside a corresponding translated component for comparison.

FIG. 11 is a screenshot of an exemplary WebCATT interface used forediting a translatable component, in one embodiment of the presentteaching. FIG. 11 shows a display area 1102 in which a web pageincluding a translated component in a second language (in this case,Spanish) is displayed. The display area 1102 provides a WYSIWYG web pagepreview feature that allows viewing the translated web page as it isbeing translated. Translations can often result in a significant amountof word growth (e.g., approx. 20% from English to Spanish) or shrinkage,which can result in carefully formatted web page layouts being knockedout of alignment by the longer text. The WYSIWYG page preview featureallows translators to immediately see the translated web pages andquickly make adjustments in word choice in order to maintain the correctalignment and layout of the page when translated.

Also shown in FIG. 11 is a section 1104 including information associatedwith the web page displayed in display area 1102, such as page status,page URL, page ID, etc. Further shown in FIG. 11 is a section 1106including statistics associated with the web site from which thedisplayed web page is garnered, such as the number of files translated,the number of segments translated, the number of translationssuppressed, etc. In addition to each of those statistics, a breakdown oftranslated and not translated components is shown in both units andpercentages.

A section 1110 provides a text segment edit form that allows atranslator to edit text segments in the order they appear on the page.This form features a fuzzy search feature that automatically shows andsorts existing segment matches in the database. The translator can copyan existing translation from the search results area to use as astarting translation.

A section 1108 provides a file list form that allows a translator topreview all linked files on the page. The list form allows thetranslator to select all files that do not require translation (e.g., animage with no text) and quickly tag them as such. It also allows atranslator to select individual files for translation via the file editform. File translation may involve uploading a translated file andtranslating the file text description if present.

The GUI as shown FIG. 11 enables a user to view the plurality oftranslated components placed into the format derived from the first, orsource, content, thereby enabling a user to review how the translatedcomponents are rendered in the first content format. The GUI of FIG. 11further allows a user to highlight any of the plurality of translatablecomponents, which are not yet translated, differently from translatedcomponents when previewing the plurality of translated components in thefirst content format. The GUI of FIG. 11 further allows a user todisplay text when hovering over a translated component so as to view thefirst content corresponding to the translated component.

The GUI as shown FIG. 11 further enables a user to select at least oneof the translated components when previewing the plurality of translatedcomponents in the first content format so as to edit the translatedcomponent and store the translated component that has been revised withthe corresponding unique identifier. The GUI of FIG. 11 further allowspreviewing in a multi-user environment so that more than one user cansimultaneously view translated components rendered in the first contentformat.

WebCATT 408 also provides complete management of the translationprocess. Web pages may be scheduled for translation either automaticallyby the translation server 400, or manually by a manager via upload ofweb pages or other type of content to be translated. When a web page isscheduled for translation, it may be placed in the translation queue ofa specific customer. Pages to be translated may be scheduled fortranslation on a priority basis based on pre-defined priorityinformation or using algorithms, such as ones based on the percentage ofthe page already translated and how often the page is being accessed onthe original web server while it's in the translation queue. This allowsthe most important pages (e.g., most frequently accessed and those withsmaller changes) to be translated first.

Once pages are in the queue, a manager can assign them for translationto a specific translator or translation service subcontractor. Ifassigned to a subcontractor, a subcontractor manager can then assignthem to specific translators within the subcontractor organization oreven to freelancers that work with them. Proofers can also be assigned.A subcontractor can assign its own proofers to pages and managers canalso assign proofers to check the work of translators or subcontractors.

A web page may go through a series of status changes before it isavailable via the Internet. The status changes follow a translationworkflow that allows translation, editing, proofing, and activation. Insome embodiments, only active pages may be made available via theInternet.

In addition to the page statuses, the text and files within the page maymaintain their own translation status. The status for text segments andfiles may be maintained both at the page level (i.e., one single overallstatus for all segments in the page and another one for all files in thepage) and individually. The status of text segments and files may changefollowing a translation workflow that allows translation, editing,proofing, and activation Translated segments and files may be availablevia the Internet only after their status is set to active.

FIG. 12 is a screenshot of an exemplary WebCATT interface used forviewing a translation queue, in one embodiment of the present teaching.FIG. 12 shows a series of columns wherein a unit of information isprovided for each page of the web site 414 listed on each row. FIG. 12shows a first column 1202 including unique page identifiers. Column 1204includes a URL for each page. Column 1206 includes receipt data for eachpage. Column 1208 includes a percentage statistic indicating thepercentage of the page that has been translated. Column 1210 indicates astatus for each page. Column 1212 indicates the contractor assigned tothe page.

FIG. 13 is an operational flow diagram depicting an exemplary process ofWebCATT 408, according to an embodiment of the present teaching. Theoperational flow diagram of FIG. 13 depicts the process by which WebCATT408, which provides a web based tool for managing language translationsof content, queues, and translates components of a web site 414. Theoperational flow diagram of FIG. 13 begins with step 1302 and flowsdirectly to step 1304.

In step 1304, WebCATT 408 may retrieve a first content, or HTML, sourcepage, in a first language from the web site 414. In step 1306, WebCATT408 may parse the first content into one or more translatablecomponents. In step 1308, WebCATT 408 may queue the translatablecomponents for human translation or human edited machine translationinto a second language.

In step 1308, for each of the translatable components it may bedetermined whether to invoke machine translation. If it is affirmative,then control flows to step 1314. Otherwise, control flows to step 1312.In step 1312, WebCATT 408 may provide a translatable component for humantranslation into a second language. In step 1314, WebCATT 408 mayperform machine translation on a translatable component into a secondlanguage. In step 1316, WebCATT 408 may provide the machine translatedcomponent for human post-editing. In step 1318, for each of thetranslatable components, WebCATT 408 may store a translated componentcorresponding to the translatable component, thereby storing a pluralityof translated components In step 1320, the control flow of FIG. 13stops.

WebCATT 408 allows translators to work directly with live pages off theweb site 414 being translated. Thus, the client web site 414 need notsend information to the translation server 400 for translation.Furthermore, all web pages in a web site may be automatically enteredinto the translation work queue by the WebCATT 408 and spider 404, asdescribed in greater detail below.

WebCATT 408 WYSIWYG preview allows translators to see translated webpages, as they would appear on the live web site. This allows thetranslator to compensate for word growth or shrinkage that knocks a webpage layout out of alignment. Furthermore, in some embodiments atranslated preview page may be marked-up with special HTML & JavaScriptto allow: 1) color coding of all text in the web page so the translatorcan see what is already translated, what remains to be translated andwhere the current text segment is located within the page, 2) clickingin text or a file to take the translator to a form to edit thetranslation for the text or file, and 3) hovering the mouse over a textor file to pop up a window showing the original wording or file.

WebCATT 408 may parse pages into translatable components and translatorsonly work with such translatable components, not a complex group of HTMLfiles. All non-translatable content, such as HTML and script code, maybe hidden when using WebCATT 408. WebCATT 408 can be utilized via theASP model and translators can access it via the web. Translated pagescan be delivered via the translation server 400 or saved as static htmlpages to be sent to client, wherein links among pages are modified sothey reference the translated pages.

WebCATT 408 also allows management of the translation process. Multipleuser access levels are supported: managers, proofers, translators &sub-contractors. Mangers can assign work in the translation queue totranslators, proofers and/or subcontractors. Subcontractor managers canin turn sub-assign work to subcontractor translators and proofers.Managers can activate web pages before the translation server 400 candeliver them.

TransScope

A spider is a program that visits web sites and reads their pages andother information in order to create entries for an index such as asearch engine index. For example, the major search engines on theInternet all have such a program, which is also known as a “crawler” ora “bot.” Spiders are typically programmed to visit web sites that havebeen submitted by their owners as new or updated. Entire web sites orspecific pages can be selectively visited and indexed. Spiders are namedbecause they usually visit many web sites in parallel at the same time,their “legs” spanning a large area of the “web.” Spiders can crawlthrough a web site's pages in several ways.

One way a spider can crawl through a web site is to follow all thehypertext links in each page until all the pages have been read. Thespiders for the major search engines on the Internet adhere to the rulesof politeness for Web spiders that are specified in a standard for robotexclusion. This standard allows specifying files to be excluded frombeing indexed. The standard also proscribes a special algorithm forwaiting between successive server requests so that the spider doesn'taffect web site response time for other users.

The operations of a spider are in contrast with a normal web browseroperated by a human that doesn't automatically follow links other thaninline images and URL redirection. The algorithm used by spiders to pickwhich references to follow strongly depends on the spider's purpose.Index-building spiders usually retrieve a significant proportion of thereferences. The other extreme is spiders that try to validate thereferences in a set of documents. These spiders usually do not retrieveany of the links apart from redirections.

FIG. 4 shows a spider 404 for use in analyzing and sizing a web site414. The spider 404 is a tool that crawls specific web sites andperforms any of a variety of actions. The spider 404 can crawl a website in order to populate the WebCATT translation queue with new orupdated information. The spider 404 may also gather content statisticsthat can be used to provide a monetary quote for deployment of thepresent teaching.

FIG. 14 is an operational flow diagram depicting an exemplary process ofspider 404, according to an embodiment of the present teaching. Theoperational flow diagram of FIG. 14 depicts the process by which spider404, which provides a web based tool for sizing a web site for languagetranslation, retrieves and indexes translatable components of a web site414. The operational flow diagram of FIG. 14 begins with step 1402 andflows directly to step 1404.

In step 1404, spider 404 may retrieve a first content, such as an HTMLsource page, in a first language from the web site 414. The firstcontent in a first language may be for translation into a second contentin a second language. The second web content may be a human translation,or machine translation, or human edited machine translation in a secondlanguage of the first web content. In step 1406, spider 404 may parsethe first content into one or more translatable components. Atranslatable component may include any one of a text segment, an imagefile with text to be translated, a multimedia file with text or audio tobe translated, a file with text to be translated, a file with image withto be translated, a file with audio to be translated, and a file withvideo and with at least one of text and audio to be translated.

In step 1410, spider 404 may store the translatable components in thedatabase 406 for human translation, or machine translation, or humanedited machine translation into the second language.

In optional step 1412, spider 404 may queue the translatable componentsfor human translation, or machine translation, or human edited machinetranslation into a second language. In optional step 1414, spider 404may provide the translatable components to WebCATT 408 for humantranslation or human edited machine translation into a second language.In step 1416, spider 404 may generate statistics based on thetranslatable components retrieved from the web site 414. The statisticsgenerated may include, but are not limited to a file count, a pagecount, a translatable segment count, a unique text segment count, aunique text segment word count, and a word count. The spider 404 canfurther generate a web page having a link to each file of the web site414. In step 1418, the control flow of FIG. 14 stops.

The spider 404 can be pre-configured for each customer web site so thatthe use of directive tags and/or attributes is eliminated or minimized.This minimizes the workload of the customer web site's IT personnel.Further, the spider 404 can be separately pre-defined by domain and/orby URL pattern. This allows specifying sections of a web site to betranslated without the need for placing directive tags in each web page.

The spider 404 can be used to update the WebCATT 408 translation workqueue. Further, spider 404 can be used to gather statistics about a website 414 in order to allow estimating the amount of work involved intranslating the web site and pricing accordingly. Spider 404 cansummarize word counts, segment counts, file counts and page counts of aweb site 414. The spider 404 may supplement the functions of WebCATT 408by saving all unique text segments and file URLs in the database 406 forlater translation into a second language. It can further create an HTML,page containing links to all files of web site 414, so the files canreviewed for translation at a later time.

The spider 404 can emulate a user agent (e.g., a browser) by saving andreturning cookies when crawling a web site 414. Spider 404 can furtherfill out and submit forms with pre-defined information and is able toestablish a session and normalize session ID parameters for e-commercesites. Spider 404 can further be configured to crawl only specific areasof a web site by defining include/exclude domains and URL patterns.Spider 404 can also be configured to send specific HTTP headers, such asthe user-agent (i.e., type of browser). Spider 404 can be executed in asingle computer or in distributed mode. In distributed mode, multiplemachines work in conjunction to crawl the same web site simultaneouslysharing the same database 406.

TransSync

Most web sites are continuously updated with new information, butmaintaining an alternate language web site up to date presents achallenge when using traditional methods. The system of the presentteaching provides various methods to maintain an alternate language website up to date.

Automatic maintenance involves automated maintenance of the alternatelanguage web site so as to be maintained in synchronization with theoriginal site with no human intervention or little additional effort.Automatic maintenance may be based on the function of the translationserver 400 that automatically schedules a web page for translation byplacing it in the WebCATT 408 translation queue (described in moredetail above) in the event a translation cannot be found for one or moretext segments or linked files in the page. Thus, the act of viewing anever-before translated or a modified page in the alternate languageenables the scheduling of the web page for translation.

There are several ways to take leverage the auto-scheduling function ofthe translation server 400. One way involves manual quality assurancereview. If a new web page or an updated web page goes through a manualquality assurance process that involves a person reviewing the pagebefore it is released to the live web site, then the quality assurancepersonnel may simply attempt to view the page in the alternate languageduring the review process. This will place the new web page in theWebCATT 408 translation queue for translation before the page goes intothe production (live) web site.

Another way to take leverage the auto-scheduling function of thetranslation server 400 involves the spider agent 404. The spider agent404 can be used to crawl a web site, or just portions of a web site, inthe alternate language on a regular basis. Crawling the web site in thealternate language is equivalent to a user viewing the site in thealternate language, and thus results in any new or modified pages beingplaced in the WebCATT 408 translation queue.

This technique can be used for regularly scheduled updates to a website, which normally happens after hours. For example, if the ABCWidgets web site modifies its sale offerings twice a week, such as onMondays and Fridays at 12 AM, then the spider agent 404 can be scheduledto crawl the relevant parts of the site shortly after (e.g., at 12:30AM) on those days. Around-the- clock translators can then translate thenew sale banners so that the alternate language web site is up to datesometime later that morning.

The spider agent 404 can also be used to regularly (e.g., daily) crawl aweb site even when changes are not regularly scheduled. This willguarantee that the alternate language site is in sync with the originallanguage site after every crawl and subsequent translation.

Another way to take leverage the auto-scheduling function of thetranslation server 400 involves user access. Even if no manual qualityassurance reviews or scheduled spider agent 404 crawls are performed,the alternate language web site may be still automatically maintained upto date over the long term. This is because the first online user thatattempts to view a new or modified page in the alternate language maytrigger the placement of that page into the WebCATT translation queue.In that case, the online user may see the page in the original languageor may see a partially translated page. However, subsequent users thataccess the page may see the web page in the alternate language after ithas been translated.

In addition to automatic maintenance, the present teaching also supportsmanual maintenance of the alternate language web site so as to bemaintained in synchronization with the original site. New informationthat needs translation can also be manually placed in the translationqueue using WebCATT 408. This can be useful to translate large amountsof data that is available in advance of it being on the live web site414. For example, if the ABC Widgets web site updates its web site withnew product offerings every Thursday morning, and all productinformation is available by the previous Tuesday, then all new productdata can be manually batched into the translation queue using WebCATT408 as soon as it is available so it is fully translated by the time thenew web pages go live. New information that needs translation may alsobe placed in the translation queue via the web service described in FIG.8(a).

Population of the WebCATT 408 translation queue can be performed eitherby URL or by content. Population by URL means that translation server400 stores only the URL of the page in the queue. The content of the URLmay be retrieved afterwards when a translator accesses the page totranslate it using WebCATT 408. Population by URL can present a problemif the content of the page is dependent on session information, such asa session ID present in a query parameter or stored in a cookie. In thatcase, the session ID in the query parameter may have expired or thesession information stored in the cookie may not be present when viewingthe page in WebCATT 408.

In some embodiments, session dependent pages can be handled in differentways. For example, a session dependent page can be handled byreplicating the session state via cookies and/or updated sessionparameters or by populating the page by content. Replicating the sessionstate allows the translator to manually re-acquire a session from theoriginal site by entering the session data in WebCATT 408. Once thesession data is entered, it can be used for translating multiple pages.Population by content means that translation server 400 stores the fullcontent of the page in the queue. This avoids the session dependenceissue, but can result in outdated content. As a result, population bycontent may be used only for session dependent pages, and population byURL, which guarantees that the content being translated is the latestcontent, may be used for all other pages.

Access to the WebCATT 408 translation queue is segmented by customer andprioritized. Pages to be translated may be scheduled for translation ona priority basis based on pre-defined priority information or usingalgorithms, such as ones based on the percentage of the page alreadytranslated and how often the page is being accessed on the original webserver while the page is in the translation queue. This allows the mostimportant pages (e.g., most frequently accessed and those with smallerchanges) to be translated first.

A file change detection feature can be used to deal with files whosenames have been changed. The translation server 400 and WebCATT 408 canmatch a file to be translated with its translated file by the URL of theoriginal file. However, it is possible for a file to be changed whileits name and location remain the same. In that case, it is possible thatan outdated translated file is used for the translation.

To overcome this issue, in some embodiments the translation server 400computes a hash-code or checksum based on the binary content of the fileand stores it with the URL. Each time a file is presented fortranslation or at certain intervals, the translation server 400 orWebCATT 408 may re-compute the hash-code or checksum and compare itagainst the stored one. If they match, the file has not changed and theexisting translated file can be used as replacement. However, if they donot match, the binary content of the file was changed and the existingfile translation cannot be used. In that case, the file may be placed inthe WebCATT 408 translation queue so it may be re-translated.

FIG. 15 is an operational flow diagram depicting an exemplarysynchronization process according to an embodiment of the presentteaching. The operational flow diagram of FIG. 15 depicts the automatedmaintenance process of the alternate language web site so as to bemaintained in synchronization with the original web site 414. Theoperational flow diagram of FIG. 15 begins with step 1502 and flowsdirectly to step 1504.

In step 1504, a first content in a first language, such as an HTML,source page, may be retrieved from the web site 414. The first contentin a first language may be for translation into a second content in asecond language. The second web content may be a human translation, ormachine translation, or human edited machine translation in a secondlanguage of the first web content. In step 1506, the first content maybe parsed into one or more translatable components.

In step 1510, a corresponding translated component of the second webcontent may be identified or matched for each translatable component ofthe first web content. If a translatable component of the first webcontent is not matched to a translated component of the second webcontent, in step 1512, the translatable component may be designated fortranslation into the second language. In optional step 1514, thetranslatable components that weren't matched may be queued for humantranslation, or machine translation, or human edited machine translationinto a second language. In optional step 1516, the translatablecomponents that weren't matched may be provided to WebCATT 408 fortranslation into a second language. In step 1518, the control flow ofFIG. 15 stops.

Preference Selector

A translated website creates value only when a potential customer visitsit. Unfortunately, users sometimes fail to notice the alternate languagelinks on the web site 414. Even when users do see these links, they maybe reluctant to click because they believe the experience will beinconsistent or inferior to the origin web site 414. The system of thepresent teaching provides a solution to this problem called PreferenceSelector, which provides different ways to prompt a user 416, whoselikely language, country, or currency preference may not be consistentwith the web site's native language, country, or currency, to confirmthis likely preference when entering a web site. FIG. 17 is an exemplaryscreenshot of how Preference Selector may be structured on a user agent(e.g., a browser), in one embodiment of the present teaching. ThroughPreference Selector, a user 416 on web site 414 can be routed to his/herpreferred online experience. As a result, user trust-levels increase andthe probability of the user carrying out a transaction on the web sitealso increases.

In one embodiment of the present teaching, Preference Selector maypop-up only when it has been determined that a user 416 likely prefersto view web site 414 in a language other than the site's nativelanguage. Otherwise, Preference Selector may not pop-up. When PreferenceSelector pops-up and the user 416 selects a preferred preferences, thesepreferences may be saved in one more cookies on the user's browser.Preference Selector can then automatically redirect the user 416 to thepreferred alternate language site when the user visits the site again.In addition to facilitating the initial language selection process,Preference Selector can also be displayed on-demand to change thesepreferences at any time.

In some embodiments, Preference Selector can use the followinginformation, which may be available in an HTTP request sent by the useragent (e.g., a browser) or via other means (e.g., cookies), as itsinputs to control the subsequent operation(s):

-   -   Request URL    -   Referrer URL    -   User Agent “Accept-language” header    -   User Agent language    -   User's IP address    -   User's geo-location information    -   User's demographic information    -   User's online activities history information    -   User Agent Language cookie, if previously visited the site

Preference Selector may be pre-configured with the followinginformation, which may be used to control its operation based on theabove inputs:

-   -   List of customer domain names to enable Preference Selector for    -   List of languages, countries and/or currencies to enable        Preference Selector for    -   List of referrer domains for each alternate language (e.g.,        www.terra.com for Spanish)    -   List of referrer TLDs (Top Level Domains) for each alternate        language (e.g., “.mx” in “google.com.mx”—GOOGLE Mexico—for        Spanish)

List of referrer subdomains for each alternate language (e.g., “espanol”in “espanol.yahoo.com” for Spanish)

List of referrer keywords or parameters for each alternate language(e.g., the search term “lavadora”—Spanish for “washer”—in the GOOGLE URLwww.google.com/search/?h1=en&q=lavadora for Spanish)

-   -   List of languages by country, region, or city    -   List of affinity languages. (e.g., a French user may prefer to        read Spanish before English)

Preference Selector may be implemented by inserting a link to aPreference Selector JavaScript file in the web site 414. This eliminatesor minimizes the effort from the IT personnel of a customer's web site.For instance, the code to be inserted to link to the JavaScript file canbe provided to a customer as part of the “One-Link” Deployment languageswitching link. The Preference Selector JavaScript file may be providedto work in conjunction with server side logic to provide the pop-up andredirection behavior.

FIG. 18 is an operational flow diagram depicting an exemplary process ofloading Preference Selector, in one embodiment of the present teaching.The operational flow diagram of FIG. 18 begins with step 1802 and flowsdirectly to step 1804. In step 1804, the user agent (e.g., a browser)may load the Preference Selector JavaScript file and execute its logic.In step 1806, the Preference Selector JavaScript file logic maydetermine whether the Preference Selector cookie is present for the user416. If the Preference Selector cookie is present, then control flows tostep 1808. Otherwise, control flows to step 1814. In step 1808, thevalue of the cookie may be inspected to determine whether the user 416prefers an alternate language site. If it is affirmative, then controlflows to step 1810. Otherwise, control flows to step 1822 and theprocessing stops. In step 1810, a configuration option that specifiesimmediate redirection may be checked to determine whether a redirectionto the preferred translated site is to be performed. If it isaffirmative, then control flows to step 1812. Otherwise, control flowsto step 1822 and processing stops. In step 1812, a JavaScript clientside redirection to the translated site may be performed, and the user416 may be redirected to the preferred translated site. It is understoodthat other implementations other than a cookie may also be used toachieve the same function.

In step 1814, the Preference Selector JavaScript file logic may generatethe Preference Selector server-side URL to the Preference Selectorapplication and instruct the user agent (e.g., a browser) to request theURL. In step 1816, the Preference Selector server-side application mayexecute its logic. In step 1818, the Preference Selector server-sideapplication may analyze the inputs provided. In step 1820, thePreference Selector server-side application may generate a response.

FIG. 20 is a block diagram depicting an exemplary process of thePreference Selector server-side application request and the response,which is also depicted in steps 1814 through 1820 in FIG. 18, in oneembodiment of the present teaching. In step 1, the Preference SelectorJavaScript file may generate the Preference Selector server-side URL tothe Preference Selector Application and instruct the user agent (e.g., abrowser) to request the URL. In step 2, the user agent may send therequest to Preference Selector Application. Step 2 shows that therequest may include the following additional information: (a) the user'sIP address and/or geo-location information, (b) the user' demographicinformation, such as but not limited to ethnic information, (c) theuser's online activity history information, such as but not limited towhich language the user has been using to send emails, or what kind ofproducts (e.g., books, CD, etc.) the user has been buying and whichlanguage those products are associated with, (d) various HTTP requestheaders, and (e) specific URL parameters. In step 3, the PreferenceSelector Application may utilize the information included in the requestand its pre-configured information to generate a response. The responsemay include displaying the Preference Selector pop-up, redirecting theuser to a translated site, or performing no action. In step 4, thePreference Selector response may be sent back to the user.

FIG. 19 is an operational flow diagram depicting an exemplary process ofthe Preference Selector server-side application for analyzing the inputsagainst the pre-configured information to control its operation andgenerate a response, in one embodiment of the present teaching. Theoperational flow diagram of FIG. 19 begins with step 1902 when theapplication receives the request from the user agent (e.g., a browser)and flows directly to step 1904. In step 1904, it may be determinedwhether the request comes from a valid Preference Selector domain. If itis affirmative, then control flows to step 1908. Otherwise, controlflows to step 1906 and the Preference Selector application may notreturn any content in this case.

In step 1908, the presence of Preference Selector cookie may be checkedand, if present, it may be determined based on the value of the cookieas to whether the user 416 prefers an alternate language site. If it isaffirmative, then control flows to step 1910. Otherwise, control flowsto step 1912. In step 1910, the Preference Selector application mayrespond with a server-side redirection to the translated language site.

In step 1912, the value of an Accept-Language user agent request headermay be inspected to determine the user's preferred language and locale.If the first (or primary) language listed therein matches with aconfigured alternate language, then this primary language may be set asthe Preference Selector default language and control flows to step 1914.Otherwise, control flows to step 1916.

In step 1914, the Preference Selector default language may be comparedagainst a configured list of affinity languages, and if a match isfound, the mapping may be applied and control flows to step 1932. Forexample, if the Preference Selector default language is French, andthere is no French website available, but an affinity language has beendefined that maps French to Spanish (because a French user 416 mayprefer to read Spanish before English), then the Preference Selectordefault language is set to Spanish. In step 1932, the PreferenceSelector application may respond with a Preference Selector pop-up,e.g., a welcome pop-up, using the Preference Selector default languageas the default selection in the user interface.

In step 1916, the value of domain name in the referrer user agentrequest header may be inspected and compared against a configured listof referrer domains to determine whether the user 416 comes from awebsite in a configured alternate language. If it is affirmative, thenthe Preference Selector default language is set to that alternatelanguage and control flows to step 1914. For example, if the referrerdomain is “www.terra.com”, which is a well known Internet portal inSpanish, then the Preference Selector default language is set toSpanish. Otherwise, control flows to step 1918.

In step 1918, the value of the top level domain (TLD) of the domain namein the referrer user agent request header may be inspected and comparedagainst a configured list of TLDs to determine whether the user 416 camefrom a website in a configured TLD. If it is affirmative, then thePreference Selector default language is set according to the languageconfigured for that TLD and control flows to step 1914. For example, ifthe referrer domain is “www.google.com.mx”, which is GOOGLE's website inMexico, and the TLD “.mx” is mapped to Spanish, then the PreferenceSelector default language is set to Spanish. Otherwise, control flows tostep 1920.

In step 1920, the value of the subdomain in the domain name in thereferrer user agent request header may be inspected and compared againsta configured list of subdomains to determine whether the user 416 camefrom a website in a configured subdomain. If it is affirmative, then thePreference Selector default language is set according to the languageconfigured for that subdomain and control flows to step 1914. Forexample, if the referrer domain is “espanol.yahoo.com”, which is YAHOO'sportal website in Spanish, and the subdomain “espanol” is mapped toSpanish, then the Preference Selector default language is set toSpanish. Otherwise, control flows to step 1922.

In step 1922, the value of a keyword or parameter in the in the referreruser agent request header may be inspected and compared against aconfigured list of keywords or parameters to determine whether the user416 is using keywords or parameters associated with an alternatelanguage. If it is affirmative, then the Preference Selector defaultlanguage is set according to the language configured for that keyword orparameter and control flows to step 1914. For example, if the referrerURL is “http://www.google.com/search?h1=en&q=lavadora” and the searchterm “lavadora” (which is Spanish for “washer”) in the URL is recognizedas a Spanish keyword, then the Preference Selector default language isset to Spanish. Otherwise, control flows to step 1924.

In step 1924, the value of the Accept-Language user agent request headermay be re-inspected to determine the user's secondary language andlocale. If a secondary language listed is matched against a configuredalternate language, then this secondary language is set as thePreference Selector default language, and control flows to step 1914.Otherwise, control flows to step 1926.

In step 1926, the value of the user agent language may be inspected todetermine the user's user agent language. If the user agent language ismatched against a configured alternate language, then the user agentlanguage is set as the Preference Selector default language, and controlflows to step 1914. Otherwise, control flows to step 1928.

In step 1928, the IP address of the user 416 may be inspected and ageo-location database used to determine the user's geographic location,such as the country, state/region, city, and zip code. If the user'sgeographic location is matched against a configured mapping of locationsto languages, and the language corresponding to the user's location ismatched against a configured alternate language, then the locationlanguage is set as the Preference Selector default language, and controlflows to step 1914. Otherwise, control flows to step 1930.

In addition to the IP address and the geo-location, the user'sdemographic information and online activity history information may beinspected to determine the user's preferred language. In one embodiment,the demographic information such as the ethnic information may beobtained and inspected. For example, if the user belongs to the Hispanicethnic group, the preferred language of the user is likely to beSpanish. In another embodiment, the user's online activities may beobtained and inspected. In one example, the language in which the userhas been using to send and receive emails may be used to determine theuser's preferred language. In another example, the user's onlineshopping history may be analyzed, for example, the language of the booksor CDs that the user has been purchasing. The demographic informationand the online activities history information may be obtained fromvarious sources, such as but not limited to cookies, online commercialactivities survey agencies, or any suitable sources where the user maysupply his/her personal information or preference information (not shownin figures).

When control flows to step 1930, Preference Selector has been unable tofind a default alternate language. In step 1930, the Preference Selectorcookie may be set with a value for the native language of the site 414.In that case, when the user 416 returns to the site 414, steps 1804,1806, 1808 and 1822 of FIG. 18 will be executed in succession resultingin the user 416 staying in the native site 414 without receiving thePreference Selector welcome pop-up, or being redirected to an alternatelanguage site.

In another embodiment of the present teaching, the order in which theinputs are checked in the operational flow diagram of FIG. 18 ismodified according to configuration information. For example, thereferrer search keyword checked in step 1922 can be checked before thedomain, TLD, and subdomain of the referrer, which may alter theresponse. In yet another embodiment of the present teaching, some of theinputs may not be checked.

In another embodiment of the present teaching, Preference Selector doesnot actually pop-up in a window in front of the native site 414, butinstead replaces an existing area in the page.

In another embodiment of the present teaching, Preference Selectorallows the user 416 to select a preferred currency and geographiclocation (i.e., country or region where the user 416 is coming from orwants items shipped to). This is useful for websites that offerinternational service (e.g., global ecommerce, country specific offersor pricing, etc).

In another embodiment of the present teaching, Preference Selectorpops-up for all users to a website, regardless of the value of thePreference Selector inputs. In this case, Preference Selector promptsall users 416 to choose a language, including those users that likelyprefer the native language of the site 414. Preference Selector may alsoprompt all users to choose a preferred currency and/or geographiclocation.

In another embodiment of the present teaching, Preference Selector showsthe user 416 customized content according to one or more of thePreference Selector inputs. For example, Preference Selector can displaymarket specific messaging or offers by language or geographic location.Preference Selector may also show a customized offer when a user 416came from a specific site (i.e., the referring site), or when the user416 used specific search keyword(s) to land on the site.

In another embodiment of the present teaching, Preference Selector canredirect the user 416 to different sites depending on one or more of thePreference Selector inputs. For example, a customer may have two sitesthat offer the same service (e.g., purchasing train tickets), one forEuropean users and the other for all other users coming from outsideEurope. Both of these sites are available in a native language andseveral other alternate languages. Preference Selector may be configuredto redirect the user 416 to the applicable language version of theappropriate site, depending on where the user 416 is coming from and theselected preferred language.

In another embodiment of the present teaching, Preference Selectorcollects data about user 416 behavior and learns about circumstancesunder which it should pop-up in the future. If a user 416 chooses analternate language site via Preference Selector, Preference Selectorrecords information on that user 416 that may include (1) the user's IPaddress and/or geo-location information, (2) the referring site URL andIP address, (3) the country/region of origin of the referring site, (4)the user' demographic information, and (5) the user's online activityhistory information. If over time a significant number of users comingfrom the same referring site select the same alternate language viaPreference Selector, even if that referring site is not located in acountry where that language is commonly used, it is added to PreferenceSelector's list of referrer sites for which to pop-up PreferenceSelector with a default selection of that alternate language. If overtime a significant number of users located on the same city or regionwithin a country (based on the user's IP address or geo-locationinformation) select the same alternate language via Preference Selector,even if that city/region is not flagged for that alternate language,that city or region is added to Preference Selector's list of locationsfor which to pop-up Preference Selector with a default selection of thatalternate language.

Content Localizer

Translating a web site to another language is an important first step inexpanding an organization's reach to new foreign markets. However, inorder to make a web site culturally suitable to a desired targetaudience, it is essential that the web site's content is customized, orlocalized, according to the culture and requirements associated with thetargeted audience. Examples of localization include, for examplecustomizing the format of numbers, dates and times; converting currencyin accordance with the custom of the local market; and converting unitsof measurement in accordance with the custom of the local market. Suchformatting and conversion capabilities may be performed by theTranslation Server 400 at the time of converting pages from one languageto another. In addition, customization can go beyond formatting andconversion in order to provide culturally relevant content to eachtargeted local market. Such localized content may include, but are notlimited to marketing content, product variations, descriptions, andlegal language specific to each target local market. The system of thepresent teaching includes a technology called Content Localizer thatenables a web site operator to easily offer content specific to a localmarket to a user 416.

Content Localizer may comprise two components: a Content LocalizerManager and a Content Localizer Server. The Content Localizer Manager isan application used to define localized content and to manage theprocess of content localization. The Content Localizer Server is anapplication responsible for serving the localized content to the user416. In some embodiments of the present teaching, the Content LocalizerManager is a web based application with a Graphical User Interface (GUI)interface.

FIG. 21 is a block diagram illustrating an exemplary system architectureof the Content Localizer, in one embodiment of the present teaching.FIG. 21 shows a web site 2114 representing a web site in a firstlanguage such as English, corresponding to the web site 414 of FIG. 4,which is connected to the Internet 2106 via a web connection. FIG. 21also shows a Translation Server 2102, corresponding to the TranslationServer 400 of FIG. 4, a Content Localizer Server 2110, and a ContentLocalizer Manager 2116. FIG. 21 further shows a localized contentdatabase 2100 for storing localized content and the associatedconditions for use by the Translation Server 2102, the Content LocalizerServer 2110, and the Content Localizer Manager 2116.

FIG. 21 also shows a user 2108 that utilizes a web connection to theInternet 2106 to browse and navigate the web pages served by the website 2114 in a first language and by the Translation Server 2102 in asecond language. Also shown in FIG. 21 is a content manager user 2120,who utilizes the Content Localizer Manager 2116 to specify localizedcontent with identifiers and associated conditions. The TranslationServer 2102, the Content Localizer Server 2110 and the Content LocalizerManager 2116 are each connected to web servers 2104, 2112, and 2118,respectively, which are the conduits through which all web actions ofthe above tools are channeled.

In some embodiments, the computer systems for Translation Server 2102,Content Localizer Server 2110, Content Localizer Manager 2116, and webservers 2104, 2112 and 2118, are one or more Personal Computers (PCs)(e.g., IBM or compatible PC workstations running the Microsoft Windows95/98/2000/2008/ME/CE/NT/XP/VISTA/7 operating system, Unix, Linux,Macintosh computers running the Mac OS operating system, ANDROID, orequivalent), Personal Digital Assistants (PDAs), tablets, smart phones,game consoles or any other information processing devices. In someembodiments, the computer systems of Translation Server 2102, ContentLocalizer Server 2110, Content Localizer Manager 2116, and web servers2104, 2112 and 2118, are server systems (e.g., SUN Ultra workstationsrunning the SunOS operating system or IBM RS/6000 workstations andservers running the AIX operating system).

The Content Localizer Manager 2116 may be utilized by users whose roleinvolves managing the content on the web site 2114 to define localizedcontent for some target markets. The Content Localizer Manager 2116allows a user to upload or specify localized content and associate suchcontent with an identifier and a variety of conditions that need to besatisfied before the localized content is to be displayed. The localizedcontent together with its identifier and associated conditions arestored in the localized content database 2100. In some embodiments,localized content can include text, one or more graphics, flash files,videos, a chunk of HTML, or JavaScript code, etc.

The identifier may be used to determine where on the site the localizedcontent is to be placed. Different versions of localized content can beassociated with the same identifier, but may have different conditions.This allows different versions of the content to be displayed on thesame area of the site depending on which conditions are met. A defaultlocalized content may also be specified, which may be used when none ofthe pre-defined conditions are met.

Examples of conditions to be satisfied in order for the content to bedisplayed may include:

-   -   Publication date and time, which restricts display of content to        only on or after the publication date and time    -   Expiration date and time, which restricts display of content to        only before the expiration date and time    -   Local Time, which restricts display of content to only at some        specific time of the day, such as in the evening    -   Browser, Operating System or Device, which restricts display of        content to users in an environment involving specified user        agents (e.g., a browser), operating systems (e.g., Windows) or        devices (e.g., a smart phone)    -   Language, which restricts display of content to users viewing        the site in a specific language, such as French    -   User's Location, which restricts display of content to users        being recognized as coming from a specific location, e.g., a        specified country, region, city or postal code, detected based        on, e.g., the user's IP address or geo-location information    -   Referrer domain, which restricts display of content to users        coming from a specific set referring site domains, such as        “www.terra.com”, a well-known portal in Spanish

Referrer TLD (Top Level Domain), which restricts display of content tousers coming from a specific set of referring site TLDs, such as “mx” in“google.com.mx” for GOOGLE Mexico

-   -   Referrer sub-domain, which restricts display of content to users        coming from a specific set of referring site sub-domains, such        as “espanol” in “espanol.yahoo.com”    -   Referrer keyword or parameter, which restricts display of        content to users who used specific keywords or parameters in the        referring site URL, such as the search term “lavadora” (Spanish        for “washer”) in the Google referring URL        www.google.com/search?h1=en&q=lavadora    -   URL or content viewed, which restricts display of content to        users that view specific URLs within the site, or that view a        page that has specific content, such as a specific page title    -   User behavior, which restricts display of content to users that        exhibit a specific behavior while visiting the site, such as a        user browsing for video cameras on a retailer's site    -   Search keywords, which restricts display of content to users who        perform on-site searches using specific search keywords    -   Stored cookie, which restricts display of content to users who        have a cookie that specify that they have previously visited the        site, or other related sites, and may have specific preferences        or have exhibited specific behavior in the past while on the        site    -   Accept-language header, which restricts display of content to        users with a specific set of values in the user agent        “Accept-language” header, such as “Accept-Language: es-ve” for a        user whose default user agent language and country is        Spanish-Venezuela    -   Browser default language, which restricts display of content to        users with a specific set of values in the user agent default        language    -   User's demographic information    -   User's online activities history information.

Localized content can be defined to support testing of two or moredifferent versions of localized content associated with the sameidentifier and the same conditions. In this case, the Content LocalizerServer 2110 may apply the different versions of the localized contentamong users that meet the associated conditions. In some embodiments,round robin approach may be applied and in other embodiments, theselection of a particular version for a particular user may be maderandomly or based on some conditions. In other embodiments, theselection may be based on a specified allocation algorithm. Specialrequirements such as session persistence may be factored in so that oncea user is assigned a specific version of the localized content, thatversion is continuously applied to the same user by, e.g., saving theinformation in a Content Localizer cookie, so that on subsequent visitsthe user is shown the same localized content.

Once localized content is defined via the Content Localizer Manager 2116and stored in the localized content database 2100, the Content LocalizerServer 2110 is responsible for serving the appropriate localized contentwhenever the conditions are met.

FIG. 22 is an operational flow diagram depicting an exemplary process ofthe Content Localizer Server 2110 for generating localized content, inone embodiment of the present teaching. The operational flow diagram ofFIG. 22 begins with step 2202 and flows directly to step 2204. In step2204, the Content Localizer Server 2110 may receive a request, such asan HTTP request, from a user agent (e.g., a browser) for localizedcontent matching a specific identifier. As described later in FIG. 25,the request may include the identifier and some or all of the followinginformation, which is used as inputs to determine which localizedcontent satisfies the conditions for display:

-   -   Request URL    -   Referrer URL    -   User Agent “Accept-language” header    -   User Agent default language    -   User's IP address    -   User's geo-location information    -   Language the user is viewing the site in    -   One or more cookies associated with the user

In step 2206, the Content Localizer Server 2110 may retrieve alllocalized content and associated conditions from the database 2100 thatmatch the identifier sent in the request. In step 2208, the ContentLocalizer Server 2110 may inspect each of the retrieved localizedcontents and conditions. In step 2210, the Content Localizer Server 2110may determine whether the conditions specified in the retrievedlocalized content match those of the inputs included in the request.

If it is affirmative, then control flows to step 2214. Otherwise,control flows to step 2212. In step 2214, the Content Localizer Server2110 may send the matching localized content as response to the request.In step 2212, the Content Localizer Server 2110 may check whether adefault localized content is defined for the identifier. If it isaffirmative, then control flows to step 2216. Otherwise, control flowsto step 2218. In step 2216, the Content Localizer Server 2110 may sendthe default localized content as response to the request. In step 2218,the Content Localizer Server 2110 may not send localized content asresponse to the request. In step 2220, the control flow of FIG. 22stops.

FIG. 23 is an operational flow diagram depicting an exemplary process ofthe Content Localizer Server 2110 for analyzing the request inputsagainst the conditions associated with a localized content to determinewhether the conditions are met, in one embodiment of the presentteaching. If the conditions are met, the process returns an affirmativeresponse, such as true or yes, to signal that the localized content isto be displayed to the user. Otherwise it returns a negative response,such as no or false, to signal that the localized content is not to bedisplayed. The operational flow diagram of FIG. 23 specifies in detailthe process used to arrive at the determination described in step 2210of FIG. 22.

The operational flow diagram of FIG. 23 begins with step 2302 when aretrieved localized content (already matched by its identifier) and itsassociated conditions is inspected, and flows directly to step 2304. Instep 2304, the publication date and time, expiration date and time, andlocal time conditions specified in the localized content may be checkedagainst the date and time of the request, and a determination may bemade whether these conditions are applicable to the request. If theseconditions are not specified or they are applicable, then control flowsto step 2308. Otherwise control flows to step 2306. In step 2306 anegative response is returned.

In step 2308, the language condition specified in the localized contentmay be checked against the language in which the user is viewing thesite, and a determination may be made whether this condition isapplicable to the request. If this condition is not specified or theuser is viewing the site in a language specified in this condition, thencontrol flows to step 2310. Otherwise control flows to step 2306. Instep 2310, the user location condition specified in the localizedcontent may be checked against the actual location of the user (whichmay be determined by the user's IP address, geo-location information ora pre-stored cookie with location information), and a determination maybe made whether this condition is applicable to the request. If thiscondition is not specified or the user is in a location specified inthis condition, then control flows to step 2312. Otherwise control flowsto step 2306. In step 2312, the stored cookie condition specified in thelocalized content may be checked against the cookies present in therequest, and a determination may be made whether this condition isapplicable to the request. If this condition is not specified or theuser has a cookie specified in this condition, then control flows tostep 2314. Otherwise control flows to step 2306.

In step 2314, the referrer domain condition specified in the localizedcontent may be checked against the domain of the referring site in therequest, and a determination may be made whether this condition isapplicable to the request. If this condition is not specified or theuser comes from a referring site domain specified in this condition,then control flows to step 2316. Otherwise control flows to step 2306.In step 2316, the referrer TLD condition specified in the localizedcontent may be checked against the TLD of the referring site in therequest, and a determination may be made whether this condition isapplicable to the request. If this condition is not specified or theuser comes from a referring site TLD specified in this condition, thencontrol flows to step 2318. Otherwise control flows to step 2306. Instep 2318, the referrer sub-domain condition specified in the localizedcontent may be checked against the sub-domain of the referring site inthe request, and a determination may be made whether this condition isapplicable to the request. If this condition is not specified or theuser comes from a referring site sub-domain specified in this condition,then control flows to step 2320. Otherwise control flows to step 2306.In step 2320, the referrer keyword or parameter condition specified inthe localized content may be checked against the URL of the referringsite in the request, and a determination may be made whether thiscondition is applicable to the request. If this condition is notspecified or URL of the referring site contains a keyword or parameterspecified in this condition, then control flows to step 2322. Otherwisecontrol flows to step 2306.

In step 2322, the Accept-language header condition specified in thelocalized content may be checked against the Accept-language header sentin the request, and a determination may be made whether this conditionis applicable to the request. If this condition is not specified or theAccept-language header contains a value specified in this condition,then control flows to step 2324. Otherwise control flows to step 2306.In step 2324, the user agent default language condition specified in thelocalized content may be checked against the user agent default languagesent in the request, and a determination may be made whether thiscondition is applicable to the request. If this condition is notspecified or the user agent default language contains a value specifiedin this condition, then control flows to step 2326. Otherwise controlflows to step 2306. In step 2326, the user agent, operating system ordevice condition specified in the localized content may be checkedagainst the user agent, operating system or device information sent inthe request, and a determination may be made whether this condition isapplicable to the request. If this condition is not specified or theuser agent, operating system or device contain a value specified in thiscondition, then control flows to step 2328. Otherwise control flows tostep 2306. In step 2328 an affirmative response is returned.

The Translation Server 2102 may work in conjunction with the ContentLocalizer Server 2110 to generate the localized content. Each area of apage on the web site 2114 that contains localized content can beidentified via the use of the localized content identifier. Thisidentifier is matched with the identifier defined for the content viathe Content Localizer Manager 2116 and stored in the localized contentdatabase 2100.

For example, below is the HTML of a page containing information about aSONY 46″ television that contains a special offer:

<html> <body> <h1>Sony - BRAVIA XBR 46″ Class / 1080p / 240Hz / LCDHDTV</h1> <p>The Sony BRAVIA XBR 46″ flat-panel LCD HDTV provides anideal centerpiece for yourmultimedia home theater system. </p><p>Special Offer</p> <p id=“offer”>Buy a Sony BRAVIA XBR before the endof the month and get free shipping! </p> </body> </html>

The above page is on a web site 2114 that is based in the US and thespecial offer is targeted to users within the US. However, the web site2114 can also be translated to Spanish to serve Spanish speakingcommunities in the USA and abroad. To be effective in marketing, it isbeneficial to localize the product offer to users, e.g., coming fromMexico or Spain who are viewing the site in Spanish. To do so, in someembodiments, the special offer may be localized by defining twodifferent versions of the localized offers via the Content LocalizerManager 2116, as shown in the example below:

Localized Offer 1:

-   -   Identifier: special-offer-100    -   Content: Buy a SONY BRAVIA XBR before the end of the month and        get a free mounting bracket!    -   Conditions: Show only to users viewing site in Spanish and        coming from Mexico

Localized Offer 2:

-   -   Identifier: special-offer-100    -   Content: Buy a SONY BRAVIA XBR before the end of the month and        get a free Sony MP3 player!    -   Conditions: Show only to users viewing site in Spanish and        coming from Spain

In this illustrated example, both localized offers share the sameidentifier (“special-offer-100”), but the actual content of the offerand the conditions differ. In this example, the Content Localizer Server2110 replaces the US version of the offer (i.e., “Buy a SONY BRAVIA XBRbefore the end of the month and get free shipping!”) with the Mexicanversion of the offer (i.e., “Buy a SONY BRAVIA XBR before the end of themonth and get a free mounting bracket!”) when a user from Mexico isviewing the site in Spanish. Or if a user from Spain is viewing the sitein Spanish, then Content Localizer Server replaces the US offer with theSpain offer (i.e., “Buy a SONY BRAVIA XBR before the end of the monthand get a free SONY MP3 player!”).

In order to be able to place localized content on a page, the area of apage that contains the content to be localized may need to beidentified. The Content Localizer Server 2110 may be designed to supportdifferent ways to achieve that. In some embodiments, this can be done bywrapping a span or div tag, or another tag, around the content to belocalized, which references the identifier assigned to the localizedcontent via the Content Localizer Manager 2116.

The example below shows the use of a span tag that wraps the text of theoffer to be localized. The span tag contains an “id” attribute whosevalue (“special-offer-100”) is the identifier assigned to the offer viathe Content Localizer Manager, allowing it to be matched with thecorresponding localized content stored in the localized content database2100.

 <html>  <body>  <h1>SONY - BRAVIA XBR 46″ Class / 1080p / 240Hz / LCDHDTV</h1>  <p>The SONY BRAVIA XBR 46″ flat-panel LCD HDTV provides anideal centerpiece for your multimedia home theater system.</p> <p>Special Offer</p>  <span id=“localize:special-offer-100”>  <pid=“offer”>Buy a Sony BRAVIA XBR before the end of the month and getfree shipping! </p>  </span>  </body>  </html>

In other embodiments, the area of the page may also be identified via anexemplary Directive Tag called “mp trans localize.” Below is an exampleof its use for the above special offer:

<!-- mp_trans_localize_start id=“special-offer-100” -->  <pid=“offer”>Buy a SONY BRAVIA XBR before the end of the month and get afree mounting bracket! </p>  <!-- mp_trans_localize_end -->

In some embodiments, other means, instead of span, div or DirectiveTags, may be used to identify the content to be localized on a page. Inone embodiment, the localized content can be associated with existingtext, or an existing graphic, flash or video file, on a page via theContent Localizer Manager 2116 and the localized version of the contentcan be replacement text or a replacement graphic, flash or video file,or even a different type of content that fits in the same area.

In another embodiment, the content to be localized on a page may beidentified via a Document Object Model (DOM) traversal syntax, such asXPath. In this case, the tags that enclose the content to be localizedare defined via their location within the DOM tree, and there is no needto use span, div or Directive Tags. Below is an example of how the XPathsyntax can be used to define the location of the area containing theoffer to be localized for the above example product page:

/html/body/p[id=“offer”]

The above XPath can be associated with the identifier“special-offer-100” without the need to insert span, div or directivetags containing the identifier in the product page

And in another embodiment of the present teaching, content to belocalized on a page can be identified by pattern matching the content inthe page against pre-defined patterns of content within the page, usinga pattern matching syntax, such as regular expressions. Below is anexample of how a regular expression can be used to define the locationof the area containing the offer to be localized for the above exampleproduct page:

<p id=“offer”>(.+)</p>

To facilitate these different embodiments disclosed herein, the ContentLocalizer Manager 2116 may provide a user interface to allow a user toselect an area of a page to be customized. Once an area is selected, theContent Localizer Manager 2116 may then identify the actual HTML codethat produces the content within the area and generate a DOM traversalpath or a pattern match expression that identifies the area within thepage.

When areas of the page to be localized are identified, the TranslationServer 2102 may be made capable of recognizing these areas at the timethat it parses the page during the process of page conversion from onelanguage to another.

In one embodiment of the present teaching, the Content Localizer Server2110 is a separate application whose primary function is to servelocalized content. In this case, when the Translation Server 2102recognizes an area to be localized at page conversion time theTranslation Server 2102 replaces the content to be localized with HTMLcode, and/or JavaScript code, and/or other code that is executed on theuser agent and generates an HTTP request to the Content Localizer Server2110 that includes the identifier of the localized content and otherrequest inputs listed in the description of FIG. 22. The ContentLocalizer Server 2110 then returns the appropriate localized contentwhich may include additional JavaScript or other code executed on theuser agent (e.g., a browser) to dynamically insert the localized contentin the page.

FIG. 24 is an operational flow diagram depicting an exemplary process ofthe Translation Server 2102 for recognizing the areas of the page to belocalized. FIG. 24 describes a Translation Server alternate process flowof FIG. 6 for recognizing areas to be localized in a page. Theoperational flow diagram of FIG. 24 begins with step 601 and flowsdirectly to step 602. Steps 601, 602, 603, 604, 614, 623, 627 and 629may be identical to the same numbered steps described in FIG. 6. Steps630 and 631 represent the normal process flow described in FIG. 6 whenthe determination of steps 603, 604, 614 and 629 is affirmative. Thealternate process flow begins in step 632 after the determination ofsteps 604, 614 and 629 are negative, meaning the current component isnot a translatable text segment, or a translatable file, or a link to atranslatable page. In step 632, it may be determined whether the currentcomponent being parsed is a tag or another element that defines thestart of an area to be localized, such as the <spanid=“localize:special-offer-100”>tag of the above example.

If it is affirmative, then control flows to step 633. Otherwise, controlflows to step 627. Step 627 is identical to the same numbered stepdescribed in FIG. 6. In step 633, the content following the start areatag may be parsed. In step 634, it may be determined whether thecomponent being parsed is the localized content area end tag. If it isaffirmative, then control flows to step 635. Otherwise, control flows toback to step 633 for further parsing and the component is ignored (i.e.,all content parsed within the start and end tags is ignored and it isnot output to the translated page). In step 635, the JavaScript code orother code to be executed on the user agent (e.g., a browser) togenerate the request to the Content Localizer Server 2110 may be addedto the translated HTML page. This code may include sending in therequest the identifier and all other information necessary for theContent Localizer Server 2110 to determine which localized content toserve.

FIG. 25 is a block diagram depicting an exemplary process of the ContentLocalizer Server 2110 request and the response, in one embodiment of thepresent teaching. In step 1, the JavaScript code or other code added bythe Translation Server 2102 in step 635 of FIG. 24 may be executed onthe user agent (e.g., a browser) of the user 2108 to generate a requestto the Content Localizer Server 2110. In step 2, the user agent may sendthe request to the Content Localizer Server. Step 2 shows that therequest may include the localized content identifier, and may alsoinclude the following additional information: (a) the user's IP addressand/or geo-location information, (b) various HTTP request headers, and(c) specific URL parameters. In step 3, the Content Localizer Server2110 may utilize the information included in the request to generatelocalized content, as described in FIG. 22 and FIG. 23. In step 4, theContent Localizer Server 2110 response may be sent back to the user.

In another embodiment of the present teaching, the Content LocalizerServer 2110 may be part of the functionality of the Translation Server2102. In this case, the Translation Server 2102 may perform the processflows described in FIGS. 22 and 23 so that when the conditions are met,the Translation Server 2102 may replace the content to be localized withthe localized content in each page at the same time it is converting thepage to another language.

For simplicity purposes, the content to be localized in the aboveexample is a string of text. However, as previously mentioned, thecontent to be localized can be anything within a page, including text,one or more graphics, flash files, videos, a chunk of HTML code,JavaScript code, CSS code, XML, etc. When uploading or enteringlocalized content via the Content Localizer Manager 2116, it is possibleto specify the dimensions of the area the content occupies on the page,which is typically done in pixels. In that case, the Content LocalizerServer 2110 may restrict the output of the localized content to thespecified dimensions. It is also possible to specify the dimensions ofthe area the content occupies on the page using the span, div tag,Directive Tag, or other tag, that wraps the content to be localized. Forexample:

<!--mp_trans_localize_start id=“special-offer-100” width=“900”height=“200”-->

<p id=“offer”>Buy a SONY BRAVIA XBR before the end of the month and geta free mounting bracket! </p>

<!--mp_trans_localize_end-->

The localized content may be uploaded or entered in the native languageof the web site 2114, or in the language of the target audience. If thecontent is specified in the native language of the web site 2114, thenthe content will automatically be entered into the translation workflowof the WebCATT tool 408, so it can be translated into the language ofthe target audience. This is useful when the localized content isgenerated by users in the native country of the web site 2114, which isthe US in this example. The localized content may also be specified inthe language of the target audience, in which case there is no need forthe content to be translated. This is useful when the localized contentis generated by users who reside in the country of the target audience.In our example, a user in Mexico whose responsibility includes managingthe local content shown to users in Mexico, may directly upload or enterthe localized offer for Mexico in Spanish in the Content LocalizerManager 2116.

The present teaching is also useful for a web site 2114 that has productassortment requirements for different local markets, such asmanufacturer restrictions on products that can only be sold in certaincountries. In this case, the Content Localizer Server 2110 can accept aperiodic data feed with product assortment information for the targetedlocal markets. This feed may include a list of the all products offered,where each product is flagged with any applicable restrictions, such asshipping restrictions. The Content Localizer Server 2110 and theTranslation Server 2102 can then use the information from the productfeed to perform product specific localizations, which may include:

-   -   Place a product specific message to inform the user 416 of the        restrictions, such as the message: “This product cannot be        shipped to Mexico”    -   Disable a specific function on the page, such as graying out or        removing an “Add to Cart” button when displaying product        information for a product that cannot be shipped to a particular        region    -   Remove all information for a product that cannot be offered for        sale in a particular region from a product listing, a product        category landing page, or a product search results page for a        user 416 in that particular region

The Translation Server 2102 and the Content Localizer Server 2110 canstore a Content Localizer cookie in the user's user agent (e.g., abrowser) that contains information that identify the user forlocalization purposes and includes information on the referring URL,user geo-location data, the conditions that were satisfied by the userand other user preferences and behavior information.

The present teaching may be realized in hardware, software, firmware, orany combination thereof. A system according to one embodiment of thepresent teaching can be realized in a centralized fashion in onecomputer system or in a distributed fashion where different elements arespread across several interconnected computer systems. Any kind ofcomputer system—or other apparatus adapted for carrying out the methodsdescribed herein—is suited. A typical combination of hardware, software,and firmware could be a general-purpose computer system with a computerprogram that, when being loaded and executed, controls the computersystem such that it carries out the methods described herein.

An embodiment of the present teaching can also be embedded in a computerprogram product, which comprises all the features enabling theimplementation of the methods described herein, and which—when loaded ina computer system—is able to carry out these methods. Computer programmeans or computer program as used in the present teaching indicates anyexpression, in any language, code or notation, of a set of instructionsintended to cause a system having an information processing capabilityto perform a particular function either directly or after either or bothof the following a) conversion to another language, code or, notation;and b) reproduction in a different material form.

A computer system may include, inter alia, one or more computers and atleast a computer readable medium, allowing a computer system, to readdata, instructions, messages or message packets, and other computerreadable information from the computer readable medium. The computerreadable medium may include non-volatile memory, such as ROM, Flashmemory, Disk drive memory, CD-ROM, and other permanent storage.Additionally, a computer readable medium may include, for example,volatile storage such as RAM, buffers, cache memory, and networkcircuits. Furthermore, the computer readable medium may comprisecomputer readable information in a transitory state medium such as anetwork link and/or a network interface, including a wired network or awireless network that allow a computer system to read such computerreadable information.

FIG. 16 is a block diagram of an exemplary computer system useful forimplementing the different aspects of the present teaching, such astranslation server, preference selector, content localizer, URLtranslation and optimization, E-mail translation server, human machinecooperated translation, WebCATT, TransScope, TransSync, etc. Thecomputer system includes one or more processors, such as processor 1604.The processor 1604 is connected to a communication infrastructure 1602(e.g., a communications bus, cross-over bar, or network). Varioussoftware embodiments are described in terms of this exemplary computersystem. After reading this description, it will become apparent to aperson of ordinary skill in the relevant art(s) how to implement theteaching using other computer systems and/or computer architectures.

The computer system can include a display interface 1608 that forwardsgraphics, text, and other data from the communication infrastructure1602 (or from a frame buffer not shown) for display on the display unit1610. The computer system also includes a main memory 1606, preferablyrandom access memory (RAM), and may also include a secondary memory1612. The secondary memory 1612 may include, for example, a hard diskdrive 1614 and/or a removable storage drive 1616, representing a floppydisk drive, a magnetic tape drive, an optical disk drive, etc. Theremovable storage drive 1616 reads from and/or writes to a removablestorage unit 1618 in a manner well known to those having ordinary skillin the art. Removable storage unit 1618, represents a floppy disk,magnetic tape, optical disk, etc. which is read by and written to byremovable storage drive 1616. As will be appreciated, the removablestorage unit 1618 includes a computer usable storage medium havingstored therein computer software and/or data.

In alternative embodiments, the secondary memory 1612 may include othersimilar means for allowing computer programs or other instructions to beloaded into the computer system. Such means may include, for example, aremovable storage unit 1622 and an interface 1620. Examples of such mayinclude a program cartridge and cartridge interface (such as that foundin video game devices), a removable memory chip (such as an EPROM, orPROM) and associated socket, and other removable storage units 1622 andinterfaces 1620 which allow software and data to be transferred from theremovable storage unit 1622 to the computer system.

The computer system may also include a communications interface 1624.Communications interface 1624 allows software and data to be transferredbetween the computer system and external devices. Examples ofcommunications interface 1624 may include a modem, a network interface(such as an Ethernet card), a communications port, a PCMCIA slot andcard, etc. Software and data transferred via communications interface1624 are in the form of signals which may be, for example, electronic,electromagnetic, optical, or other signals capable of being received bycommunications interface 1624. These signals are provided tocommunications interface 1624 via a communications path (i.e., channel)1626. This channel 1626 carries signals and may be implemented usingwire or cable, fiber optics, a phone line, a cellular phone link, an RFlink, and/or other communications channels.

In this document, the terms “computer program medium,” “computer usablemedium,” and “computer readable medium” are used to generally refer tomedia such as main memory 1606 and secondary memory 1612, removablestorage drive 1616, a hard disk installed in hard disk drive 1614, andsignals. These computer program products are means for providingsoftware to the computer system. The computer readable medium allows thecomputer system to read data, instructions, messages or message packets,and other computer readable information from the computer readablemedium. The computer readable medium, for example, may includenon-volatile memory, such as Floppy, ROM, Flash memory, Disk drivememory, CD-ROM, and other permanent storage. It is useful, for example,for transporting information, such as data and computer instructions,between computer systems. Furthermore, the computer readable medium maycomprise computer readable information in a transitory state medium suchas a network link and/or a network interface, including a wired networkor a wireless network, that allow a computer to read such computerreadable information.

Computer programs (also called computer control logic) are stored inmain memory 1606 and/or secondary memory 1612. Computer programs mayalso be received via communications interface 1624. Such computerprograms, when executed, enable the computer system to perform thefeatures of the present teaching as discussed herein. In particular, thecomputer programs, when executed, enable the processor 1604 to performthe features of the computer system. Accordingly, such computer programsrepresent controllers of the computer system.

Although specific embodiments of the teaching have been disclosed, thosehaving ordinary skill in the art will understand that changes can bemade to the specific embodiments without departing from the spirit andscope of the teaching. The scope of the teaching is not to berestricted, therefore, to the specific embodiments.

Other concepts relate to unique software for implementing the differentaspects of the present teaching, such as translation server, preferenceselector, content localizer, URL translation and optimization, E-mailtranslation server, human machine cooperated translation, WebCATT,TransScope, TransSync, etc. A software product, in accord with thisconcept, includes at least one machine-readable medium and informationcarried by the medium. The information carried by the medium may beexecutable program code data regarding web content translation andoperational parameters. When such information carried by the medium isread by a machine, it causes the machine to perform programmedfunctions. In one example, a translation server located connected withthe Internet executes instructions recorded on a medium and is capableof receiving a request for content translation, to obtain content in afirst language from a publicly accessible source, analyzing the contentin the first language, performing necessary translation based on theanalysis, and forwarding, via a network, the translated content in asecond language to a party that requesting it.

The hardware elements, operating systems and programming languages ofsuch translation servers are conventional in nature, and it is presumedthat those skilled in the art are adequately familiar therewith. Ofcourse, the server functions may be implemented in a distributed fashionon a number of similar or even different platforms, to distribute theprocessing load. Hence, aspects of the methods of receiving web contenttranslation requests through a common communication port in a server ornetwork device from a variety of client applications, as outlined above,may be embodied in programming.

Program aspects of the technology may be thought of as “products” or“articles of manufacture” typically in the form of executable codeand/or associated data that is carried on or embodied in a type ofmachine readable medium. Tangible non-transitory “storage” type mediainclude any or all of the memory of the computers, processors or thelike, or associated modules thereof, such as various semiconductormemories, tape drives, disk drives and the like, which may providestorage at any time for the software programming.

All or portions of the software may at times be communicated through theInternet or various other telecommunication networks. Suchcommunications, for example, may enable loading of the software from onecomputer or processor into another, for example, from a managementserver or host computer of the network operator or carrier into theplatform of the message server or other device implementing a messageserver or similar functionality. Thus, another type of media that maybear the software elements includes optical, electrical andelectromagnetic waves, such as used across physical interfaces betweenlocal devices, through wired and optical landline networks and overvarious air-links. The physical elements that carry such waves, such aswired or wireless links, optical links or the like, also may beconsidered as media bearing the software. As used herein, unlessrestricted to tangible “storage” media, terms such as computer ormachine “readable medium” refer to any medium that participates inproviding instructions to a processor for execution.

Hence, a machine readable medium may take many forms, including but notlimited to, a tangible storage medium, a carrier wave medium or physicaltransmission medium. Non-volatile storage media include, for example,optical or magnetic disks, such as any of the storage devices in anycomputer(s) or the like, such as may be used to implement the dataaggregator, the customer communication system, etc. shown in thedrawings. Volatile storage media include dynamic memory, such as mainmemory of such a computer platform. Tangible transmission media includecoaxial cables; copper wire and fiber optics, including the wires thatcomprise a bus within a computer system. Carrier-wave transmission mediacan take the form of electric or electromagnetic signals, or acoustic orlight waves such as those generated during radio frequency (RF) andinfrared (IR) data communications. Common forms of computer-readablemedia therefore include for example: a floppy disk, a flexible disk,hard disk, magnetic tape, any other magnetic medium, a CD-ROM, DVD orDVD-ROM, any other optical medium, punch cards paper tape, any otherphysical storage medium with patterns of holes, a RAM, a PROM and EPROM,a FLASH-EPROM, any other memory chip or cartridge, a carrier wavetransporting data or instructions, cables or links transporting such acarrier wave, or any other medium from which a computer can readprogramming code and/or data. Many of these forms of computer readablemedia may be involved in carrying one or more sequences of one or moreinstructions to a processor for execution.

Those skilled in the art will recognize that the present teachings areamenable to a variety of modifications and/or enhancements. For example,although the message server implementation described above is embodiedin a hardware device, it can also be implemented as a software onlysolution—e.g., requiring installation on an existing server. Inaddition, a message server or a bind pooling mechanism as disclosedherein can also be implemented as a firmware, firmware/softwarecombination, firmware/hardware combination, orhardware/firmware/software combination.

We claim:
 1. A method implemented on a computer having at least oneprocessor, storage, and a communication platform for providingtranslated content, comprising: receiving a request, via a publicnetwork connection, for content in a second language to be translatedfrom corresponding content in a first language; obtaining, based on therequest, the content in the first language from an Internet source thathosts the content in the first language; dividing the content in thefirst language into translatable components; identifying, with respectto the translatable components, a set of translated components each ofwhich is previously stored corresponding to one of the translatablecomponents; translating, via machine translation, one or moretranslatable components that do not have translated componentspreviously stored to generate one or more machine translated componentsin the second language; scheduling, at least some of the one or moremachine translated components for human post-editing to generate a setof human post-edited translated components; generating the content inthe second language based on the set of translated components previouslystored, the set of human post-edited translated components, andremaining of the one or more machine translated components that are nothuman post-edited; and sending the content in the second language as aresponse to the request.
 2. The method of claim 1, further comprisingstoring each of the set of human post-edited translated components as atranslated component for future use.
 3. The method of claim 1, whereinthe content is an electronic mail or a text message.
 4. The method ofclaim 3, wherein the first language is related to a sender of theelectronic mail or the text message.
 5. The method of claim 3, whereinthe second language is related to an intended recipient of theelectronic mail or the text message.
 6. The method of claim 1, whereinat least some of the translated components have been previouslytranslated via machine translation with human post-editing.
 7. Machinereadable and non-transitory medium having information stored thereon forproviding translated content, wherein the information, once read by amachine, causes the machine to perform: receiving a request, via apublic network connection, for content in a second language to betranslated from corresponding content in a first language; obtaining,based on the request, the content in the first language from an Internetsource that hosts the content in the first language; dividing thecontent in the first language into translatable components; identifying,with respect to the translatable components, a set of translatedcomponents each of which is previously stored corresponding to one ofthe translatable components; translating, via machine translation, oneor more translatable components that do not have translated componentspreviously stored to generate one or more machine translated componentsin the second language; scheduling, at least some of the one or moremachine translated components for human post-editing to generate a setof human post-edited translated components; generating the content inthe second language based on the set of translated components previouslystored, the set of human post-edited translated components, andremaining of the one or more machine translated components that are nothuman post-edited; and sending the content in the second language as aresponse to the request.
 8. The medium of claim 7, wherein theinformation, once read by the machine, further causes the machine toperform storing each of the set of human post-edited translatedcomponents as a translated component for future use.
 9. The medium ofclaim 7, wherein the content is an electronic mail or a text message.10. The medium of claim 9, wherein the first language is related to asender of the electronic mail or the text message.
 11. The medium ofclaim 9, wherein the second language is related to an intended recipientof the electronic mail or the text message.
 12. The medium of claim 7,wherein at least some of the translated components have been previouslytranslated via machine translation with human post-editing.